0

我有两个用 C 编写的程序。程序 A 生成到 FIFO 的输出,程序 B 从 FIFO 读取该输出并决定进行相应的处理。现在在程序 A 中,我已将 stdout 重定向到 FIFO,以便每个 printf 方法都将输出抛出到 FIFO。

在程序 B 中,我打开 FIFO(在读取模式下)并开始使用 fgets() 逐行读取进程 A 的输出。现在问题出现在这里,因为我期望的行为不是我得到的。

我预计一旦进程 A 将某些行打印到 FIFO,进程 B 应该立即得到它(就像进程 A 中发生的事情的实时更新)但我得到的是进程 B 中不会读取 FIFO 中的内容直到进程 A 关闭了 FIFO 连接,因此我批量获取数据,而不是在进程 A 将某些内容打印到 FIFO 时立即获取数据。

我想知道它是否是FIFO的默认行为(即写入端关闭连接时批量读取数据)?

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

任何帮助,将不胜感激。

4

1 回答 1

0

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

于 2013-03-15T16:29:33.380 回答