2
我需要自动执行以下命令POPEN包含需要说的是所有输出
cmd="yes | vgremove <vgname>"
,每当我与
Popen(cmd.split(),stdout=PIPE,stderr=PIPE)
它没有完整的代码此命令的命令。我怀疑它等待命令完成,所以管道被击中,有没有替代方案?
我需要自动执行以下命令POPEN包含需要说的是所有输出
cmd="yes | vgremove <vgname>"
,每当我与
Popen(cmd.split(),stdout=PIPE,stderr=PIPE)
它没有完整的代码此命令的命令。我怀疑它等待命令完成,所以管道被击中,有没有替代方案?
有在这种情况下,一个更简单的方法:
Popen('vgremove -f <vgname>')
至于具体你的问题:
p = Popen(cmd.split(), stdout=PIPE, stderr=PIPE, stdin=PIPE)
p.stdin.write('yes')
管道是一个shell的功能,所以你需要对shell=True
。如果没有shell=True
,您正在执行的操作是使用参数执行yes
。永不停止执行,因此子进程永不返回。