在FIFO到达时从FIFO读取数据(linux)

时间:2013-03-13 06:33:58

标签: c linux ipc pipe fifo

我有两个用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的默认行为(即当写入结束关闭连接时批量读取数据)?

我希望我现在有代码,但我是从家用电脑上发布的。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

正如对我的问题的评论所建议的那样,我在程序A中使用fflush并解决了问题。谢谢以上所有。