我有两个用 C 编写的程序。程序 A 生成到 FIFO 的输出,程序 B 从 FIFO 读取该输出并决定进行相应的处理。现在在程序 A 中,我已将 stdout 重定向到 FIFO,以便每个 printf 方法都将输出抛出到 FIFO。
在程序 B 中,我打开 FIFO(在读取模式下)并开始使用 fgets() 从中逐行读取进程 A 的输出。现在问题出现了,因为我期望的行为不是我得到的。
我预计,一旦进程 A 将某些行打印到 FIFO,进程 B 应该立即获取它(就像进程 A 中发生的情况的实时更新),但我得到的是 FIFO 中的内容没有被读入进程 B 直到进程 A 关闭 FIFO 连接,因此我会批量获取数据,而不是在进程 A 将某些内容打印到 FIFO 时立即获取数据。
我想知道这是否是 FIFO 的默认行为(即写入结束关闭连接时批量读取数据)?
我希望此时此刻有代码,但我是从我的家用计算机发布此代码的。
如有任何帮助,我们将不胜感激。
最佳答案
正如我的问题评论中所建议的,我在程序 A 中使用了 fflush 并解决了问题。谢谢以上各位。
关于c - 当数据到达时从 FIFO 读取数据 (linux),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15378524/