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>