Comment interagir avec un processus à l'aide de sous-processus module

Je vais avoir des problèmes de redirection stdio d'un autre programme à l'aide de sous-processus module. Il suffit de lire à partir de stdout résultats dans la pendaison, et Popen.communiquer() fonctionne, mais il ferme les tubes après la lecture/écriture. Quelle est la meilleure façon de mettre en œuvre cette?

Je jouais un peu avec ce sur windows:

import subprocess
proc = subprocess.Popen('python -c "while True: print \'Hi %s!\' % raw_input()"',
                        shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE,
                        stderr=subprocess.STDOUT)
while True:
    proc.stdin.write('world\n')
    proc_read = proc.stdout.readline()
    if proc_read:
        print proc_read
Dupliquer: stackoverflow.com/questions/163542/..., stackoverflow.com/questions/295459/...
-u pavillon résoudre pour un Python sous-processus. Il y a aussi pexpect, pty les modules et les unbuffer, stdbuf, script utilitaires qui peuvent aider à résoudre le bloc-mise en mémoire tampon d'émission.

OriginalL'auteur Ivan Baldin | 2009-01-14