擅长:python、mysql、java
<p>在Unix中,有时需要考虑子进程可以将文本输出到两个不同的输出流。如果没有问题,比如<code>echo hello</code>,文本将被发送到<a href="http://en.wikipedia.org/wiki/Stderr#Standard_output_.28stdout.29" rel="nofollow">"standard output" stream</a>。在</p>
<p>另一方面,进程将其所有错误消息发送给<a href="http://en.wikipedia.org/wiki/Stderr#Standard_error_.28stderr.29" rel="nofollow">"standard error" stream</a>;例如<code>stat /this-file-does-not-exist</code>,这被认为是一种良好的方式。您可以通过将所有标准输出发送到<code>/dev/null</code>来验证这一点。在</p>
<p>运行此命令时,您的控制台上没有输出:</p>
<pre><code>stat . > /dev/null
</code></pre>
<p>运行此程序时,控制台上将出现一条错误消息<em>(因为文本来自标准错误流):</p>
^{pr2}$
<p>回到您的问题,“标准错误”流有时称为“stderr”。这个流中的文本可以使用Python的<code>subprocess</code>库使用<a href="http://docs.python.org/library/subprocess.html#subprocess.Popen.stderr" rel="nofollow">^{<cd5>}</a>属性捕获。在</p>