当指定stdin = PIPE时,Python subprocess.Popen终止

时间:2018-01-17 10:18:27

标签: windows python-2.7 subprocess

我是python中的子进程的新手,我需要生成许多独立的子进程,让它们保持活动状态并将命令传递给它们。乍一看,子进程库是我正在寻找的。

我已经阅读了documenations,因为我理解将任何命令传递到子进程中,我必须指定输入。

我需要通过windows命令行运行命令,因此下面的玩具示例足够好,如果我有它工作,我已经完成了。通过IDLE在下面运行代码会打开一个新的cmd窗口,打印一个cwd文件列表,但是我无法写入它,因为未指定stdin(将使用p.stdin.write('DIR')写入'DIR'示例命令)。

from subprocess import Popen, PIPE
p = Popen(['cmd', '/K', 'DIR'])

因此,我根据文档将stdin指定为PIPE。

from subprocess import Popen, PIPE
p = Popen(['cmd', '/K', 'DIR'], stdin=PIPE)

但是,运行第二段代码会立即终止打开的cmd窗口。这是预期的行为吗?就我在文档中找到的情况而言,只有p.kill()p.terminate()结束子进程。如果是这样,可能的解决方法是什么?如果没有,我做错了什么,我应该使用哪些其他库?谢谢!

0 个答案:

没有答案