11
我試圖寫入命名管道,使用mkfifo。但是當我運行命令時,(ex)ls > myNamedPipe
,我不能再輸入命令到bash中。我仍然可以編寫角色,這就是它。無法寫入命名管道
我試圖寫入命名管道,使用mkfifo。但是當我運行命令時,(ex)ls > myNamedPipe
,我不能再輸入命令到bash中。我仍然可以編寫角色,這就是它。無法寫入命名管道
命名管道保持打開狀態,直到您從其他位置讀取它爲止。這是爲了允許不同進程之間的通信。
嘗試:
mkfifo fifo
echo "foo" > fifo
然後打開另一個終端類型:
cat fifo
如果您返回到第一終端,你會發現,你現在可以輸入其他命令。
參見什麼用反向happends:
# terminal 1
cat fifo
# terminal 2
echo "foo" > fifo
# and now you can see "foo" on terminal 1
如果你想你終端不嘗試寫一些東西到FIFO,連接到FIFO文件描述符時「上掛起」:
mkfifo fifo
exec 3<> fifo
echo "foo" > fifo
echo "bar" > fifo
非常感謝!謝謝一堆! – tay10r 2013-03-13 04:38:51
謝謝 - 這很好用!你能解釋我爲什麼嗎?我不太清楚'exec 3 <> fifo'行如何修復東西.. – Joost 2013-12-06 13:53:33
將fifo連接到文件描述符會導致shell緩衝寫入fifo的數據。沒有它,任何對fifo的寫入都會阻塞,直到讀取寫入的內容爲止。使用文件描述符,shell會緩存「foo」和「bar」,並且任何從該文件描述符讀取的內容都可以在稍後讀取它們。 – chepner 2014-01-17 15:21:25