为什么这个简单的Python子进程用法会挂起?
import subprocess
proc1 = subprocess.Popen(['cat'], stdout=subprocess.PIPE, stdin=subprocess.PIPE)
proc2 = subprocess.Popen(['cat'], stdout=subprocess.PIPE, stdin=subprocess.PIPE)
proc1.stdin.close()
proc1.wait()
在Debian上用Python 2.6.6运行这个程序时,它一直不结束。奇怪的是,当我把最后两行改成用proc2
时,它就能正常结束了。
这是怎么回事呢?
1 个回答
0
试着在终端里输入“cat”而不加任何参数。这个“cat”命令需要一些东西来连接到标准输出。
>>> from subprocess import Popen, PIPE
>>> args = ["cat", "foobar"]
>>> reply = Popen(args, stdout=PIPE).communicate()[0]
>>> print (reply)
line 0
line 1
line 2
>>>
文档里有很多不错的使用示例:
http://docs.python.org/library/subprocess.html#replacing-shell-pipeline