Leitura / escrita em um subprocesso Popen ()
Estou tentando falar com um processo filho usando a chamada python subprocess.Popen (). No meu código real, estou implementando um tipo de IPC, portanto, quero gravar alguns dados, ler a resposta, escrever mais alguns dados, ler a resposta e assim por diante. Por causa disso, não posso usar o Popen.communicate (), que funciona bem no caso simples.
Este código mostra meu problema. Ele nunca recebe a primeira resposta, trava no primeiro "resultado de leitura". Por quê? Como posso fazer isso funcionar como eu esperava?
<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>