sous-processus.Popen.stdout lecture stdout en temps réel (encore une fois)

Encore une fois, la même question.
La raison en est, je ne peux pas le faire fonctionner après la lecture de ce qui suit:

Mon cas, c'est que j'ai une console application écrite en C, permet de prendre pour exemple ce code dans une boucle:

tmp = 0.0;   
printf("\ninput>>"); 
scanf_s("%f",&tmp); 
printf ("\ninput was: %f",tmp); 

Il lit en permanence de certains et écrit sur la sortie.

Mon code python pour interagir avec lui est la suivante:

p=subprocess.Popen([path],stdout=subprocess.PIPE,stdin=subprocess.PIPE)
p.stdin.write('12345\n')
for line in p.stdout: 
    print(">>> " + str(line.rstrip())) 
    p.stdout.flush() 

Jusqu'à présent chaque fois que je lis formulaire p.stdout il attend jusqu'à ce que le processus est terminé et génère ensuite une chaîne vide. J'ai essayé beaucoup de choses, mais toujours le même résultat.

J'ai essayé Python 2.6 et 3.1, mais la version n'a pas d'importance - j'ai juste besoin pour le faire fonctionner quelque part.

Je suis exactement dans la même situation, après avoir lu toutes ces question et encore rien trouvé élégant qui fonctionne.
connexes: Comment interagir correctement avec un processus à l'aide de sous-processus module
Je suis venu ici avec la même question, il a trouvé la réponse ici stackoverflow.com/q/375427/168034

OriginalL'auteur Halst | 2010-06-29