Как организовать общение процессов через stdin/stdout?

Задача у меня несколько нетривиальная, организовать общение между процессами без сокетов (только stdin/stdout).
Основной скрипт, который запускает рядом лежащий скрипт:
import subprocess
messages = ['test1', 'test2', 'test3', 'test4', 'test5', ]
process = subprocess.Popen(['C:\\Python27\\python.exe', 'subscript.py'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, universal_newlines=True)
while len(messages)>0:
	process.stdin.write(messages.pop() + '\n')
	print process.stdout.readline()


Рядом с ним лежит subscript.py:
import sys
while True:
	print sys.stdin.readline()


После запуска первого файла не происходит ничего. Как я понял, данные отправляются в stdin дочернего процесса, но сам дочерний процесс не может их прочесть (или они до него не доходят?).
Если руками открыть subprocess.py - он отрабатывает как надо.
В чем может быть проблема?

UPD:
Если в первом файле после process.stdin.write(.....) добавить process.stdin.close(), то отправляется одно значение, но stdin закрывается для записи...
  • Вопрос задан
  • 3829 просмотров
Пригласить эксперта
Ответы на вопрос 1
@CreeperTntBoom
process.stdin.flush()
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы