作者MiracleShot (啊?)
看板LinuxDev
標題[問題] FIFO bwtween 2 child processes
時間Tue Nov 20 02:11:40 2012
因為有需要fork 多個child processes後
能夠讓他們彼此溝通, 所以想練習使用FIFO(named pipe)
目標是 先fork一個child_1寫入後(child_1結束)
再fork另一個child_2去讀取 印出FIFO中的資料
可是我發現在child_1寫入的時候, 他好像一定要有reader,否則會block住
如果在寫入的時候設成nonblocking 就會出現No such device or address的錯誤
後來我試了在child_1開一個fd當讀取端 這樣不會被block
可是child_2也讀不到東西..
最後還是必須讓child_2先sleep一下 等child_1去卡在open O_WRONLY
等child_2去做open O_RDONLY後, 才能順利讓child_1寫入,讓child_2讀到資料
以下連結是我的code:
http://pastie.org/5402251
想問一下有沒有可以讓child_1先順利寫進FIFO, exit後
又能讓child_2讀到資料的方法?
謝謝! > <
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.208.23
※ 編輯: MiracleShot 來自: 140.113.208.23 (11/20 02:12)
1F:→ MiracleShot:突然想到乾脆再fork一個給他block... 11/20 02:34
2F:推 cobrasgo:我第一個想到的是,一定要fork嗎?不能用thread? 11/20 20:17
3F:→ cobrasgo:你用FIFO有一個block住全都再見了… 11/20 20:17
4F:→ MiracleShot:結果助教跟我說可以試試signal.. 11/21 02:05
5F:→ MiracleShot:耶~我成功了~ 11/21 17:19
6F:推 shietsd:為啥不用 unnamed pipe ? 既然都是 child process 了 11/27 21:49