Я пытаюсь поговорить с дочерним процессом, используя 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()