擅长:python、mysql、java
<pre class="lang-py prettyprint-override"><code>import os
from subprocess import check_call, STDOUT
DEVNULL = open(os.devnull, 'wb')
try:
check_call(("taskkill", "/PID", str(p.pid)), stdout=DEVNULL, stderr=STDOUT)
finally:
DEVNULL.close()
</code></pre>
<p>我总是将元组传递给子进程,因为它省去了我对转义的担心。check_call确保(a)子流程在管道关闭之前已完成<em>,并且(b)被调用流程中的故障不会被忽略。最后,<code>os.devnull</code>是Python 2.4+中表示<code>NUL</code>的标准、跨平台方式。</p>
<p>注意,在Py3K中,subprocess为您提供了DEVNULL,因此您只需编写:</p>
<pre><code>from subprocess import check_call, DEVNULL, STDOUT
check_call(("taskkill", "/PID", str(p.pid)), stdout=DEVNULL, stderr=STDOUT)
</code></pre>