Pav*_*ath 4 c ipc pipe interprocess
几乎所有pipe我见过的例子都建议关闭未使用的写/读端.男人也清楚地说明了pipe() creates a pipe, a unidirectional data channel但是我已经尝试在父母和孩子的管道的两端读书和写作,一切似乎都没问题.
所以我怀疑为什么我们需要2个管道,如果两个进程必须相互读写,为什么不使用单个管道呢?
如果您使用相同的管道,孩子如何将其消息与父母消息分开,反之亦然?
例如:
Parent writes to pipe
Parent reads from pipe hoping to get message from child but gets its own message :(
Run Code Online (Sandbox Code Playgroud)
对于child-> parent使用一个管道和为parent-> child使用另一个管道要容易得多.
即使你有一些读/写协议,很容易使父子进程死锁.
您可以在创建的管道的两端读取和写入,但单向意味着数据只能在任何时间从一个方向传输,从父级到子级,反之亦然.非阻塞发送和接收数据需要两个管道,这意味着您可以使用两个管道同时读取和写入,但是使用一个管道必须先完成读取才能写入管道或者必须完成写入内容在你能读取管道之前.通俗地说,您只能在一个管道上随时读取或写入