【发布时间】:2017-07-24 09:54:09
【问题描述】:
我在 linux 上,我最初期望对于 fifo 文件,当我将一些内容由写入器转储到其中时,写入器将等待读取对等方读取其“所有”内容然后返回。不过好像不像我想象的那样,我做了一个简单的实验:
首先,我创建了一个fifo文件:
$mkfifo hfifo.txt
然后我有一个“my.txt”文件,有几行“:
$cat my.txt
line1
line2
line3
line4
我打开一个“tty1”用 my.txt 写入 hfifo.txt:
cat my.txt >hfifo.txt
我打开另一个终端“tty2”,从中读取一行:
$read l1<hfifo.txt
令我惊讶的是,当“读取”完成时,我的“tty1”中的“猫”也立即返回。我“echo $l1”将打印“line1”。这对我来说很奇怪,因为我希望读者对等应该读取所有写入到 fifo 的内容,然后作者对等 (tty1) 将返回。但实际结果是,一旦 reader peer 结束,writer peer 也随之结束。
我只是好奇
(1) writer peer 怎么知道没有更多的 reader 来读取 fifo 所以它完成了?我可以循环调用“读取”命令来打印该文件的每一行。
(2) 除了“cat”命令作为读取器转储fifo之外,shell编程有没有办法一行一行地读取这个fifo?
请多多指教,谢谢!
【问题讨论】:
标签: linux return fifo writer reader