我需要自动执行以下命令
cmd="yes | vgremove <vgname>"
每当我代码这个命令
Popen(cmd.split(),stdout=PIPE,stderr=PIPE)
它没有完成。 我怀疑它等待,直到命令获取完整的,所以管击中,是否有替代这个???
我需要自动执行以下命令
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
有争论。 yes
从未停止执行这样子永远不会返回。