未知数のコマンドを実行して、stdoutをファイルに取り込もうとしています。しかし、各インスタンスでp.wait()
を試してみると難しいです。複数のsubproccess.Popenコマンドを同時に待機()してから終了します。
print "Started..."
for i, cmd in enumerate(commands):
i = "output_%d.log" % i
p = Popen(cmd, shell=True, universal_newlines=True, stdout=open(i, 'w'))
p.wait()
print "Done!"
私は現在のスクリプトそれぞれ、すべての単一のプロセスが完了しているだけを同時にcommands
ですべてを実行し、終了する方法を探しています:私のコードは次のようになります。また、各コマンドが終了コードを返すときに通知されるのに役立ちます。
私はJFセバスチャンによってthis oneを含め、いくつかの答えを見て、args=(p.returncode, q)
からargs=(p.stdout, q)
を変更することで、私の状況に適合するようにしようとしたが、それのように、すぐに終了し、(おそらくshell=True
に?)、バックグラウンドで実行されている終わってきましたよくbashシェルの中に押し込まれたキーに応答しない...私はこれとどこに行くべきかわからない。
Jeremy Brown's answerも手伝っていただきましたが、select.epoll()
がAttributeError例外をスローしていました。
他のシームレスな方法や仕組みがありますか?それはクロスプラットフォームである必要はありません、GNU/LinuxとmacOSのための解決策は大いに感謝されるでしょう。前もって感謝します!