如何解决您将如何缓冲 stdio 输入流线?
简单的测试程序:
#include <stdio.h>
int
main()
{
FILE *ofile = fopen("/dev/tty","w");
FILE *ifile = fopen("/dev/tty","r");
int i;
fprintf(ofile,"Enter a number: ");
fscanf(ifile,"%i\n",&i);
fprintf(ofile,"You entered %d\n",i);
return 0;
}
fscanf() 在我用 ^D 生成 EOF 之前不会返回。有没有办法让它在换行后返回?
我已经尝试在 /dev/tty 上使用 open(2) 并确认在我点击换行符后 read(2) 正在返回,因此不需要的缓冲肯定发生在 stdio 中,而不是内核中。
如何让我的输入文件表现得像标准输入?
奇怪的是,从 ifile
读取确实会导致对 ofile
的写入被刷新,所以至少在 stdio 中something 明白我正在与终端交互。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。