【发布时间】:2009-10-28 00:46:33
【问题描述】:
我有两个程序,Writer 和 Reader。
我有一个从 Writer 到 Reader 的 FIFO,所以当我在 Writer 中向 stdin 写入内容时,它会从 Reader 打印到 stdout。
我尝试在打开两个 Reader 的情况下执行此操作,但我只从两个 Reader 程序中的一个将输出输出到 stdout。每次我运行它时,Unix 选择从哪个 Reader 程序打印 stdout 似乎是任意的,但是一旦它选择了其中一个程序,stdout 的每个输出都会从同一个 Reader 程序打印出来。
有人知道为什么会这样吗?
如果我有两个 WRITER 程序,它们都可以写入同一个管道。
【问题讨论】:
-
您是否想知道为什么数据没有“广播”给每个读者,或者为什么数据没有在每个读者之间均匀分布?
-
我相信 Writer 正在写入其标准输出(不是标准输入),即 FIFO;每个 Reader 大概都是从自己的标准输入(即 FIFO)读取数据,然后将数据写入自己的标准输出。
-
Jacob – 我想知道为什么数据不会同时发送给两个读者,只有一个。
-
+1 ,这很好在 SO 上存档。去年,当 Linux 成为默认开发平台时,我的一些同事也问过我同样的问题。