Имам проблеми с пренасочването на 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
-u
флаг ще го реши за подпроцес на Python. Има същоpexpect
,pty
модули иunbuffer
,stdbuf
,script
помощни програми, които могат да помогнат за коригиране на проблема с буферирането на блокове. - person jfs   schedule 22.05.2013