您将如何缓冲 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 的写入被刷新,所以至少在 stdiosomething 明白我正在与终端交互。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)