擅长:python、mysql、java
<p>第二个进程可能是继承管道的输入端,因此管道永远不会关闭。我不是Python专家,但也许可以通过<code>Popen</code>首先使用<code>stdin=PIPE</code>对第二个进程进行<code>Popen</code>,然后使用第二个进程的<code>.stdin</code>作为其<code>stdout</code>,来避免这一问题。(<code>Popen</code>可能会安排进程在内部创建的管道的输入端没有句柄。)</p>
<p>为了解决文件描述符继承问题,请使用<code>close_fds=True</code>调用子进程:</p>
<pre><code>pobj2 = subprocess.Popen(shlex.split(cmd2),
stdin=pipe_out,
stdout=file_out,
close_fds=True)
</code></pre>