subprocess.Popen の使用時に問題が発生しました。ここで問題を解決しました。次の編集を fake_utility.py に追加すると、stderr=subprocess.PIPE が subprocess.Popen に追加されます。
#fake_utility.py
import time
i = 0
while True:
print hex(i)*512
i += 1
time.sleep(0.5)
#python interpreter
import subprocess
proc = subprocess.Popen(['python','fake_utility.py'],stdout=subprocess.PIPE, stderr=subprocess.PIPE)
for err in proc.stderr:
print "err::", err
for line in proc.stdout:
print "test:", line.rstrip()
プログラムは応答しません。Ctrl-C を押すと、次のようになります。
Traceback (most recent call last):
File "run_fake_utility.py", line 6, in <module>
err = proc.stderr.readline()
KeyboardInterrupt
proc.stderr.readline() でブロックされています。proc.stderr から行の読み取りを削除すると、プログラムは正常に実行されます。
考えられるエラーは何ですか?Python2.6を使用しています。