subprocess モジュールを使用して別のプログラムの stdio をリダイレクトする際に問題があります。stdout から読み取るだけでハングし、Popen.communicate() は機能しますが、読み取り/書き込み後にパイプを閉じます。これを実装する最も簡単な方法は何ですか?
私はWindowsでこれをいじっていました:
import subprocess
proc = subprocess.Popen('python -c "while True: print \'Hi %s!\' % raw_input()"',
shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE,
stderr=subprocess.STDOUT)
while True:
proc.stdin.write('world\n')
proc_read = proc.stdout.readline()
if proc_read:
print proc_read