作者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