我在linux上,我最初预计对于fifo文件,当我将作者的一些内容转储到作者身上时,作者将等待读对等读取其所有内容,然后返回。但似乎并不如我所料,我做了一个简单的实验: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”,继续读下去从中e行:
$read l1<hfifo.txt
那么我supprise,为“已读”结束,“猫”在我的“为tty1”也立即返回。我“echo $ l1”将打印“line1”。这对我来说很奇怪,因为我期望读者同行应该读取正在写入fifo的所有内容,然后作者peer(tty1)将返回。但实际结果是,一旦读者同行结束,作家同行也就结束了。
我只是好奇
(1)如何作家同行知道,有没有更多的阅读器读取FIFO所以它完成?我可以在一个循环中调用“read”命令来打印这个文件的每一行。
(2)旁边的“猫”命令作为阅读器转储fifo,是否有一种方法让shell编程通过一行读取这个fifo一行?
请提出建议,谢谢!