Odczyt / zapis do podprocesu Popen ()

Próbuję porozmawiać z procesem potomnym za pomocą wywołania python subprocess.Popen (). W moim prawdziwym kodzie implementuję typ IPC, więc chcę napisać trochę danych, odczytać odpowiedź, napisać więcej danych, odczytać odpowiedź i tak dalej. Z tego powodu nie mogę używać Popen.communicate (), która w innym przypadku działa dobrze w przypadku prostym.

Ten kod pokazuje mój problem. Nigdy nie otrzymuje nawet pierwszej odpowiedzi, zawiesza się przy pierwszym „wyniku czytania”. Czemu? Jak mogę wykonać tę pracę zgodnie z oczekiwaniami?

<code>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()
</code>

questionAnswers(2)

yourAnswerToTheQuestion