[Chapter10] 两个进程间通信为什么要两个管道,一个不行吗?
背景:之前用管道连接2个进程时(pipe ls head、pipe who sort...),需要两个管道,但为什么不能用一根管道呢?
一个进程可以从管道的读端口读取另一个进程发来的控制信号,然后再从写端口将结果发送回去啊!
解答:这样会导致数组错乱。因为当你从写端口将算出来的结果发送回去后,一般会立即读下一个控制信号,但此时读回来的可能是自己刚刚发出去的。
实际上管道就是一个队列。
背景:之前用管道连接2个进程时(pipe ls head、pipe who sort...),需要两个管道,但为什么不能用一根管道呢?
一个进程可以从管道的读端口读取另一个进程发来的控制信号,然后再从写端口将结果发送回去啊!
解答:这样会导致数组错乱。因为当你从写端口将算出来的结果发送回去后,一般会立即读下一个控制信号,但此时读回来的可能是自己刚刚发出去的。
实际上管道就是一个队列。