为什么Python子进程的这种简单用法会挂起?

2024-09-25 04:33:26 发布

您现在位置: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上用Python2.6.6运行这个程序时,程序永远不会退出。奇怪的是,当我更改最后两行使用proc2时,它确实退出了。在

这是怎么回事?在


Tags: import程序closestdinstdoutdebiancatsubprocess
1条回答
网友
1楼 · 发布于 2024-09-25 04:33:26

尝试在终端中键入“cat”而不带参数。”cat”需要一些东西连接到stdout。在

>>> 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

相关问题 更多 >