擅长:python、mysql、java
<p><strong>为什么您的方法不起作用:</strong>
调用两个独立的子shell。第二个shell不知道第一个shell,因此没有关于在第一个shell中执行的进程的返回代码的任何信息。在</p>
<p><strong>解决方案:</strong>
使用<code>subprocess</code>模块,直接生成子进程(不是通过子shell)并检索返回代码。请阅读模块的文档:<a href="http://docs.python.org/library/subprocess.html" rel="nofollow">http://docs.python.org/library/subprocess.html</a></p>
<p>有几种方法可以实现你的目标。一种简单的方法是:</p>
<pre><code>import subprocess as sp
p = sp.Popen(['command', 'arg1', 'arg2'], stdout=sp.PIPE, stderr=sp.PIPE)
stdout, stderr = p.communicate()
returncode = p.returncode
</code></pre>
<p>这样,您就不必经过子shell(默认情况下是<code>shell=False</code>),这是出于各种原因推荐的方法。您可以直接捕获生成的子进程的返回代码,并且可以完全访问子进程的标准输出和标准错误。在</p>