python subprocess.Popen() 呼び出しを使用して子プロセスと通信しようとしています。私の実際のコードでは、ある種の IPC を実装しているので、データを書き込み、応答を読み取り、さらにデータを書き込み、応答を読み取ります。このため、Popen.communicate() を使用できません。それ以外の場合は、単純なケースでうまく機能します。
このコードは私の問題を示しています。最初の応答すら得られず、最初の「読み取り結果」でハングします。なんで?これを期待どおりに機能させるにはどうすればよいですか?
import subprocess
p = subprocess.Popen(["sed", 's/a/x/g'],
stdout = subprocess.PIPE,
stdin = subprocess.PIPE)
p.stdin.write("abc\n")
print "Reading result:"
print p.stdout.readline()
p.stdin.write("cat\n")
print "Reading result:"
print p.stdout.readline()