有两个进程(父进程和子进程)通过管道进行通信。父级正在等待其子级退出,然后从管道的读取端读取数据。孩子可能产生相当多的输出。管道是否有可能因为未读数据太多而失败并丢失了一些孩子的输出?
答案 0 :(得分:3)
无需担心:在标准的2.6或3.0内核上,管道缓冲区为64k - 因此,如果缓冲区已满,第一个进程将阻止写入。
如果另一方面这个太少,请在两个具有可配置内存大小的工作程序之间使用buffer
答案 1 :(得分:1)
是的,如果管道填满子进程块并导致死锁。
这是python中遇到的问题,请参阅[1]中的Popen.wait()警告,第17.1.2节;他们使用沟通方法来避免这个问题。