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
。永不停止執行,因此子進程永不返回。