【发布时间】:2014-03-10 05:00:11
【问题描述】:
我正在编写一个脚本来执行一系列进程并将它们的所有输出连接到另一个进程的输入中。我已经将我的脚本压缩成一个测试用例,使用 echo 和 cat 作为实际流程的替代品。
#!/usr/bin/python
import os,subprocess
(pipeOut, pipeIn) = os.pipe()
catProcess = subprocess.Popen("/bin/cat", stdin = pipeOut)
for line in ["First line", "Last line"]:
subprocess.call(["/bin/echo",line], stdout = pipeIn)
os.close(pipeIn)
os.close(pipeOut)
catProcess.wait()
程序按预期运行,除了对catProcess.wait() 的调用挂起(可能是因为它仍在等待更多输入)。将close_fds=True 传递给Popen 或call 似乎也无济于事。
有没有办法关闭catProcesses 的标准输入,让它优雅地退出?或者还有其他方法可以编写这个程序吗?
【问题讨论】:
标签: python subprocess pipe popen