Lesen / Schreiben in einem Popen () - Unterprozess

Ich versuche, über den Aufruf python subprocess.Popen () mit einem untergeordneten Prozess zu kommunizieren. In meinem realen Code implementiere ich eine Art IPC, also möchte ich einige Daten schreiben, die Antwort lesen, einige weitere Daten schreiben, die Antwort lesen und so weiter. Aus diesem Grund kann ich Popen.communicate () nicht verwenden, was ansonsten für den einfachen Fall gut funktioniert.

Dieser Code zeigt mein Problem. Es kommt nicht einmal die erste Antwort, hängt am ersten "Leseergebnis". Warum? Wie kann ich diese Arbeit machen, wie ich es erwarte?

<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>

Antworten auf die Frage(2)

Ihre Antwort auf die Frage