[問題] FIFO bwtween 2 child processes

看板LinuxDev作者 (啊?)時間13年前 (2012/11/20 02:11), 編輯推噓2(204)
留言6則, 3人參與, 最新討論串1/1
因為有需要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)

11/20 02:34, , 1F
突然想到乾脆再fork一個給他block...
11/20 02:34, 1F

11/20 20:17, , 2F
我第一個想到的是,一定要fork嗎?不能用thread?
11/20 20:17, 2F

11/20 20:17, , 3F
你用FIFO有一個block住全都再見了…
11/20 20:17, 3F

11/21 02:05, , 4F
結果助教跟我說可以試試signal..
11/21 02:05, 4F

11/21 17:19, , 5F
耶~我成功了~
11/21 17:19, 5F

11/27 21:49, , 6F
為啥不用 unnamed pipe ? 既然都是 child process 了
11/27 21:49, 6F
文章代碼(AID): #1GgdPV8c (LinuxDev)
文章代碼(AID): #1GgdPV8c (LinuxDev)