2

次のコマンドを自動化する必要があります

cmd="yes | vgremove <vgname>"

このコマンドをでコーディングするときはいつでも

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

完了しません。コマンドが完了するまで待機しているので、パイプが打たれているのではないかと思いますが、これに代わる方法はありますか?

4

2 に答える 2

7

この場合、はるかに簡単な方法があります。

Popen('vgremove -f <vgname>')

具体的にあなたの質問に関して:

p = Popen(cmd.split(), stdout=PIPE, stderr=PIPE, stdin=PIPE)
p.stdin.write('yes')
于 2012-06-15T21:40:52.180 に答える
3

配管はシェル機能であるため、それが必要shell=Trueになります。あなたがせずにやっていることは、引数を使ってshell=True実行することです。実行を停止しないため、サブプロセスが戻ることはありません。yesyes

于 2012-06-15T21:49:16.793 に答える