擅长:python、mysql、java
<p>您的问题是使用<code>subprocess.check_output</code>-您是正确的,您无法使用该接口获取子PID。改为使用Popen:</p>
<pre><code>proc = subprocess.Popen(["ls", "-l"], stdout=PIPE, stderr=PIPE)
# Here you can get the PID
global child_pid
child_pid = proc.pid
# Now we can wait for the child to complete
(output, error) = proc.communicate()
if error:
print "error:", error
print "output:", output
</code></pre>
<p>要确保在出口处杀死孩子:</p>
<pre><code>import os
import signal
def kill_child():
if child_pid is None:
pass
else:
os.kill(child_pid, signal.SIGTERM)
import atexit
atexit.register(kill_child)
</code></pre>