python subprocess pipe_Python2.x subprocess.Popen的Broken pipe解决方法
时间: 2023-07-26 22:37:56 浏览: 315
python中的subprocess.Popen()使用详解
在使用Python2.x的subprocess.Popen时,如果子进程的输出被重定向到父进程中,并且子进程的输出比较大,就有可能出现Broken pipe的错误。
这是因为父进程在读取子进程的输出时,可能会因为缓冲区已满而阻塞,而此时子进程已经结束并关闭了输出管道,就会导致Broken pipe的错误。
为了解决这个问题,可以在调用Popen时设置stdout和stderr的缓冲区大小为0,即不进行缓冲。代码示例如下:
```python
import subprocess
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, bufsize=0)
```
其中,bufsize=0表示不进行缓冲。这样就可以避免Broken pipe的错误了。
阅读全文