Lectura / escritura a un subproceso Popen ()

Estoy tratando de hablar con un proceso secundario utilizando el subproceso python.Popen () call. En mi código real, estoy implementando un tipo de IPC, por lo que quiero escribir algunos datos, leer la respuesta, escribir más datos, leer la respuesta, etc. Debido a esto, no puedo usar Popen.communicate (), que de lo contrario funciona bien para el caso simple.

Este código muestra mi problema. Ni siquiera recibe la primera respuesta, se cuelga en el primer "Resultado de lectura". ¿Por qué? ¿Cómo puedo hacer que esto funcione como espero?

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

Respuestas a la pregunta(2)

Su respuesta a la pregunta