stdinとstdoutを経由して前後に送られるメッセージによって制御される外部プロセスを起動する必要があります。 Subprocess.Popenを使用して、プロセスを開始することができますが、必要に応じてstdin経由で実行を制御することができません。STDIN/STDOUTによるPythonによる外部プロセスの開始と制御
私が完了しようとしているものの流れがにある:ステップ
- のいくつかの数のための外部プロセス
- 反復は、次の処理を完了するために、外部プロセスを知らせる
- スタート新しい行の文字をstdinに書き込むことによってステップする
- 外部プロセスが、ステップの完了を知らせるのを待って、改行文字をstdoutに書き込むことで
- 実行が完了したことを外部プロセスに示すために、外部プロセスのstdinを閉じます。私は「\ nを」外部プロセスに伝達されていない上記のコードを実行し、私はステップ#0を超えて取得することはありません場合は
process=subprocess.Popen([PathToProcess],stdin=subprocess.PIPE,stdout=subprocess.PIPE); for i in xrange(StepsToComplete): print "Forcing step # %s"%i process.communicate(input='\n')
:私は今のところ、以下が出ている
。コードはprocess.communicate()でブロックされ、それ以上は進めません。私は、commun()メソッドを間違って使用していますか?
また、「外部プロセスが新しい行を書き込むまで待機する」機能を実装するにはどうすればよいですか?
最初にこれをしたときに私に噛み砕く何かは、あなたが何人かのキャラクターしか送っていないなら、何かが伝わる前にストリームを洗い流さなければならないかもしれないということでした。 – Kiv