我看过的几乎所有与
pipe
有关的示例都建议关闭未使用的写入/读取端。手册也明确说明了pipe()创建了一个单向数据通道
。但是,我尝试在管道的双端(父进程和子进程)进行读写操作,一切似乎都很正常。
我的疑问是:如果两个进程都需要读写彼此的数据,为什么我们需要两个管道呢?为什么不使用一个管道呢?
pipe
有关的示例都建议关闭未使用的写入/读取端。手册也明确说明了pipe()创建了一个单向数据通道
。但是,我尝试在管道的双端(父进程和子进程)进行读写操作,一切似乎都很正常。
我的疑问是:如果两个进程都需要读写彼此的数据,为什么我们需要两个管道呢?为什么不使用一个管道呢?
Parent writes to pipe
Parent reads from pipe hoping to get message from child but gets its own message :(
使用一个管道来实现子进程到父进程间的通信,再使用另一个管道实现父进程到子进程间的通信,会更加容易。即使你有某些读写协议,也很容易造成父子进程死锁。