看板 LinuxDev 關於我們 聯絡資訊
因為有需要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)
MiracleShot:突然想到乾脆再fork一個給他block... 11/20 02:34
cobrasgo:我第一個想到的是,一定要fork嗎?不能用thread? 11/20 20:17
cobrasgo:你用FIFO有一個block住全都再見了… 11/20 20:17
MiracleShot:結果助教跟我說可以試試signal.. 11/21 02:05
MiracleShot:耶~我成功了~ 11/21 17:19
shietsd:為啥不用 unnamed pipe ? 既然都是 child process 了 11/27 21:49