Me gustaría ejecutar varios comandos en una aplicación independiente lanzada desde un script de python, usando pipes. La única forma en que podía pasar los comandos de manera confiable a la rutina del programa era usar Popen.com, pero cierra el programa después de que se ejecuta el comando. Si uso Popen.stdin.write, entonces el comando ejecuta solo 1 vez de cada 5, no funciona de manera confiable. ¿Qué estoy haciendo mal?Ejecutando múltiples comandos usando Popen.stdin
Para elaborar un poco:
Tengo una aplicación que escucha a la entrada estándar para los comandos y los ejecuta línea por línea. Me gustaría poder ejecutar la aplicación y pasarle varios comandos, según la interacción de los usuarios con una GUI. Este es un simple ejemplo de prueba:
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()
que cabe esperar para ver el resultado de ambos comandos, pero no consigo ninguna respuesta. (Si ejecuto una de las líneas Popen.write varias veces de vez en cuando funciona.)
Y si ejecuto:
process.communicate("doSomething1")
funciona perfectamente, pero la aplicación termina.
Incluya un fragmento de código. ¿Qué quieres decir con "comandos múltiples"? –
Su pregunta no está nada clara. ¿Qué son 'comandos múltiples'? ¿A quién está tratando de pasar 'comandos' ?. Como mencionó Adam, incluye un fragmento de código. –
Lo siento muchachos, he hecho algunos cambios en la publicación para dejar en claro lo que me gustaría hacer. –