6
votes

Comment rediriger STDOUT pour un sous-processus?

proc.stdout = proc_log

0 commentaires

3 Réponses :


4
votes

Vous ne pouvez pas. Une fois le processus démarré, son stdout n'est rien que vous puissiez changer de l'extérieur. Vous devez entrer dans cet espace de processus sur Muck avec ses descripteurs de fichier.

Si vous avez un moyen (en MyReset () Je suppose) parler au processus de course, vous pouvez peut-être l'ingénieur un moyen de passer un nouveau nom de fichier à (re) ouvert stdout, de cette façon.


0 commentaires

6
votes

Comme ledess dit, vous ne pouvez pas modifier le descripteur de fichier que le processus enfant écrit sa sortie à.

Ce que vous pouvez faire, est lu la sortie du processus enfant dans votre script Python, puis écrivez-le à quoi que ce soit fichier que vous voulez. Par exemple: xxx

obus, vous devez déterminer comment le contrôle devrait se comporter dans votre application, c'est-à-dire pouvez-vous faire l'écriture du fil principal, lorsque le fil principal doit-il faire Retour de startProc () Dans ce cas, ou devez-vous faire l'écriture d'un autre thread de sorte que le thread principal puisse revenir de startProc () immédiatement.


0 commentaires

1
votes

Il y a des problèmes / bugs subtils liés à la sous-processus.Pipe: http://bugs.python.org/issue1652

Apparemment, cela a été fixé à Python3 +, mais pas en python 2,7 et plus. Pour cela, vous devez utiliser: code.google.com/p/python-subprocess32 /


0 commentaires