即使在致电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提供的内容。
答案 0 :(得分:1)
您不需要前两个语句。只需致电communicate()
即可。