我是否应该担心pipe道飞越?

有两个进程(父和子)通过pipe道进行通信。 父母正在等待孩子退出,然后从pipe道的读取端读取数据。 孩子可能会产生相当多的产出。 pipe道是否可能因为太多的未读数据而失败并丢失一些孩子的输出?

不需要担心:在一个标准的2.6或3.0内核上,管道缓冲区是64k,所以如果缓冲区满了,第一个进程会阻塞写入。

另一方面,如果太少,则在两个工人之间使用buffer ,这个buffer具有可配置的内存大小

是的,如果管道填满了子进程块,并且发生死锁。

这也是在Python中遇到的问题,请参阅[1]中的Popen.wait()警告,第17.1.2节; 他们使用沟通的方法来避免这个问题。

[1] http://docs.python.org/library/subprocess.html