终止后,Python Subprocess通信失败

时间:2016-07-07 22:04:01

标签: python subprocess

即使在致电proc.communicate()后,proc.terminate()的来电仍然挂起,我遇到了一个问题。

我通过调用

创建要在后台运行的任务
import subprocess as sub
p = sub.Popen(command, stdout=sub.PIPE, stderr=sub.PIPE, shell=False)

完成脚本后,我致电terminate()communicate()wait()以收集流程中的信息。

p.terminate()
errorcode = p.wait()
(pout, perr) = p.communicate()

脚本在通话时挂起。我假设任何在终止呼叫之后进行通信的呼叫都会立即返回。这有什么理由会失败吗?

编辑:我正在使用此方法,因为该命令实际上是一个不会自行终止的紧密循环。我想使用p.terminate()来做,然后看看stdout和stderr提供的内容。

1 个答案:

答案 0 :(得分:1)

您不需要前两个语句。只需致电communicate()即可。