我有两个用C编写的程序。程序A生成输出到FIFO,程序B从FIFO读取输出并决定相应地处理。现在在程序A中,我已将stdout重定向到FIFO,以便每个printf方法都将输出抛出到FIFO。
在程序B中,我打开FIFO(处于读取模式)并开始逐行读取进程A的输出fgets()。现在问题出现了,因为我预期的行为不是我得到的。
我预计,只要进程A将某些行打印到FIFO,进程B就应该立即得到它(就像进程A中发生的事情的实时更新),但我得到的是FIFO中的内容未被读入进程B直到进程A关闭FIFO连接,因为只要进程A将某些内容打印到FIFO,我就会批量处理数据,而不是使用它。
我想知道它是否是FIFO的默认行为(即当写入结束关闭连接时批量读取数据)?
我希望我现在有代码,但我是从家用电脑上发布的。
任何帮助将不胜感激。
答案 0 :(得分:0)
正如对我的问题的评论所建议的那样,我在程序A中使用fflush并解决了问题。谢谢以上所有。