2012-07-07 36 views
5

是否可以使用Linux管道創建一個循環?例如。Linux管道和環路

cmd1 | cmd2 | cmd3 | 「回到標準輸入CMD1」

換句話說,我想在stdoutcmd3被連接回cmd1stdin

+0

要知道,這樣的循環可能會導致死鎖。如果循環中的某個命令在寫入過程中停止讀取太久,則最終所有管道都將變滿且阻塞。即使原來的慢速命令也不能再寫了。 – jilles 2012-07-07 22:35:02

+0

我將用它作爲「消息傳遞環」(作爲基於0MQ的系統的替代品):我不認爲會發生這種類型的死鎖。 – jldupont 2012-07-08 01:45:58

回答

4

你可以使用一個命名管道/ FIFO:

mkfifo cmd3-to-cmd1 
cmd1 < cmd3-to-cmd1 | cmd2 | cmd3 >> cmd3-to-cmd1