Чтение/запись в подпроцесс Popen ()

Я пытаюсь поговорить с дочерним процессом, используя 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()
11
задан Mats Ekberg 28 April 2012 в 15:25
поделиться