在等待文档(http://docs.python.org/2/library/subprocess.html#subprocess.Popen.wait)中,它说:
警告
这将在使用 stdout=PIPE 和/或 stderr=PIPE 时发生死锁,并且子进程会向管道生成足够的输出,从而阻塞等待 OS 管道缓冲区接受更多数据。使用communicate() 来避免这种情况。
由此,我认为communicate
可以替换所有不需要的if用法。甚至当or不是 PIPE 时,我也可以替换为.wait()
retcode
stdout
stdin
wait()
communicate()
那正确吗?谢谢!