pipe
我见过的几乎所有示例都建议关闭未使用的写入/读取结束。男人也明确指出,pipe() creates a pipe, a unidirectional data channel
但我已经尝试在父母和孩子的管道两端进行读写,一切似乎都很好。
所以我的疑问是,如果两个进程必须相互读写,为什么我们需要 2 个管道,为什么不使用单个管道呢?
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 :(
将一个管道用于子-> 父,将另一个管道用于父-> 子,这要容易得多。
即使您有一些用于读/写的协议,也很容易使父进程和子进程死锁。
您可以在创建的管道的两端读取和写入,但单向意味着数据在任何时候都只能在一个方向上传输,从父级到子级,反之亦然。非阻塞发送和接收数据需要两个管道,这意味着您可以使用两个管道同时读取和写入,但是使用一个管道您必须先完成读取才能写入管道,否则您必须完成写入在您阅读管道之前。用外行的话来说,你只能在任何时间点用一个管道读取或写入