POPEN包含需要说的是所有输出的命令(Popen a command that contains

2019-06-25 13:23发布

我需要自动执行以下命令

cmd="yes | vgremove <vgname>"

每当我代码这个命令

Popen(cmd.split(),stdout=PIPE,stderr=PIPE)

它没有完成。 我怀疑它等待,直到命令获取完整的,所以管击中,是否有替代这个???

Answer 1:

有一个在这种情况下,更简单的方法:

Popen('vgremove -f <vgname>')

至于具体你的问题:

p = Popen(cmd.split(), stdout=PIPE, stderr=PIPE, stdin=PIPE)
p.stdin.write('yes')


Answer 2:

管道是一个shell的功能,所以你需要shell=True上。 你在做什么,而不shell=True是执行yes有争论。 yes从未停止执行这样子永远不会返回。



文章来源: Popen a command that contains need to say yes for all outputs