擅长:python、mysql、java
<P>根据XIY的建议,我将命令分割到空间划定的字段中,并且没有用“&&GT”和“/DEV/NULL”运行。我把它们移走了,效果很好。在</p>
<p>然后,我将所有命令放回原处,在没有“&;>;/dev/null”的情况下对其进行了测试,这也起到了作用。添加“&;>;/dev/null”似乎会以某种方式关闭子进程。在</p>
<pre><code>Welcome to Dana version 0.7
Now there is Dana AND ZOL
received command 'cat /etc/fstab'
p.wait() is 0
p.returncode is '0'
received command 'cat /etc/fstabb'
p.wait() is 1
p.returncode is '1'
received command 'cat /etc/fstab &> /dev/null'
p.wait() is 0
p.returncode is '0'
received command 'cat /etc/fstabb &> /dev/null'
p.wait() is 0
p.returncode is '0'
root@Ubuntu-14:~# cat /etc/fstab &> /dev/null
root@Ubuntu-14:~# echo $?
0
root@Ubuntu-14:~# cat /etc/fstabb &> /dev/null
root@Ubuntu-14:~# echo $?
1
root@Ubuntu-14:~#
</code></pre>
<p>我最初在调用中添加了“&;>;/dev/null”,因为我在屏幕上看到了STDERR的输出。一旦我将stderr=PIPE添加到子进程调用中,这种情况就消失了。我只是想悄悄地检查后台输出的代码。在</p>
<p>如果有人能解释为什么在Python中向子进程调用添加“&;>;/dev/null”会导致它出现意外行为,我很乐意选择这个作为答案!在</p>