2010-05-05 57 views
3

我想將相同的信息寫入兩個管道,但我不想等待第一個管道讀取。這裏有一個例子異步三通

 
mkfifo one 
mkfifo two 
echo hi | tee one two & 
cat one & 
cat two & 

cat one直到cat two運行不會開始閱讀。有沒有辦法讓cat one無需等待?

回答

1

問題:FIFO都阻擋直到用於讀。所以只需在其上打開一個讀取FD:

mkfifo one two 
echo hi | tee one two & 
exec 3<one 
exec 4<two 
cat <&3 
cat <&4 
+0

當三通的輸入大於管道緩衝區時,這似乎不起作用。重現:用'dd if = <(yes)count = 1000 |更改第二行tee one two>/dev/null&',腳本將被阻止 – hbogert 2015-09-28 11:16:10

0
echo hi | tee one | tee two & 
+0

有意思。我其實想要貓一和貓二是獨立的。 – User1 2010-05-05 22:32:48