我在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一行?
請提出建議,謝謝!