Lecture/écriture à un Popen() sous-processus

Je suis en train de parler à un enfant de processus à l'aide de python sous-processus.Popen (). Dans mon code, je me suis mise en œuvre d'un type de l'IPC, donc je veux écrire des données, lire la réponse, écrire un peu plus de données, de lire la réponse, et ainsi de suite. De ce fait, je ne peux pas utiliser Popen.communiquer(), qui fonctionne bien pour les cas les plus simples.

Ce code montre mon problème. Il n'a jamais obtient la première réponse, se bloque lors de la première "Lecture de résultat". Pourquoi? Comment puis-je faire ce travail que je m'attendre?

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

OriginalL'auteur Mats Ekberg | 2012-04-28