Je voudrais exécuter plusieurs commandes dans une application autonome lancée à partir d'un script python, en utilisant des tubes. La seule façon de transmettre de manière fiable les commandes au fichier stdin du programme était d'utiliser Popen.communicate mais il ferme le programme après l'exécution de la commande. Si j'utilise Popen.stdin.write que la commande ne s'exécute que 1 fois sur 5 ou plus, cela ne fonctionne pas. Qu'est-ce que je fais mal?Exécution de plusieurs commandes à l'aide de Popen.stdin
Pour élaborer un peu:
J'ai une application qui écoute stdin pour les commandes et les exécute ligne par ligne. J'aimerais pouvoir exécuter l'application et lui transmettre diverses commandes, en fonction de l'interaction de l'utilisateur avec une interface graphique. Ceci est un exemple de test simple:
import os, string
from subprocess import Popen, PIPE
command = "anApplication"
process = Popen(command, shell=False, stderr=None, stdin=PIPE)
process.stdin.write("doSomething1\n")
process.stdin.flush()
process.stdin.write("doSomething2\n")
process.stdin.flush()
J'attends de voir le résultat des deux commandes mais je ne reçois pas de réponse. (Si j'exécute une des lignes Popen.write plusieurs fois de temps en temps, il fonctionne.)
Et si j'Execute:
process.communicate("doSomething1")
il fonctionne parfaitement, mais l'application se termine.
Veuillez inclure un extrait de code. Que voulez-vous dire par "commandes multiples"? –
Votre question n'est pas claire du tout. Que sont les 'commandes multiples'? A quel stdin essaies-tu de passer des "commandes"? Comme Adam l'a mentionné, veuillez inclure un extrait de code. –
Désolé les gars, j'ai apporté quelques modifications à la publication pour clarifier ce que j'aimerais faire. –