次のコマンドを自動化する必要があります
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=True
になります。あなたがせずにやっていることは、引数を使ってshell=True
実行することです。実行を停止しないため、サブプロセスが戻ることはありません。yes
yes