擅长:python、mysql、java
<p>你必须离开<code>subprocess.call</code>去做这件事,但它仍然会达到同样的效果。子流程调用运行传递的命令,等待完成,然后返回returncode属性。在我的示例中,我展示了如果需要,如何在完成时获取returncode</p>
<p>下面是一个如何终止子进程的示例,您必须截获SIGINT(Ctrl+c)信号,以便在退出主进程之前终止子进程。如果需要,还可以从子流程获取标准输出、标准错误和returncode属性</p>
<pre><code>#!/usr/bin/env python
import signal
import sys
import subprocess
def signal_handler(sig, frame):
p.terminate()
p.wait()
sys.exit(0)
signal.signal(signal.SIGINT, signal_handler)
p = subprocess.Popen('./stdout_stderr', shell=True,
stderr=subprocess.PIPE, stdout=subprocess.PIPE)
# capture stdout and stderr
out, err = p.communicate()
# print the stdout, stderr, and subprocess return code
print(out)
print(err)
print(p.returncode)
</code></pre>