Intentando redirigir la salida de un subproceso a un archivo.subproceso.Popen() IO redirect
server.py:
while 1:
print "Count " + str(count)
sys.stdout.flush()
count = count + 1
time.sleep(1)
Laucher:
cmd = './server.py >temp.txt'
args = shlex.split(cmd)
server = subprocess.Popen(args)
La salida aparecen en la pantalla, temp.txt
permanece vacío. ¿Qué estoy haciendo mal?
Como fondo, intento capturar el resultado de un programa que ya se ha escrito.
no puedo usar:
server = subprocess.Popen(
[exe_name],
stdin=subprocess.PIPE, stdout=subprocess.PIPE)
ya que el programa no puede ras. En cambio, iba a redirigir la salida a través de una fifo. Esto funciona bien si ejecuto Server.py manualmente, pero obviamente no si I Popen()
causa que la redirección no funcione. ps -aux
muestra que server.py
se inició correctamente.
Eso funciona. Comunicar bloquearía el lector hasta que el servidor finalice, pero ahora que puedo redirigir puedo enviar la salida del servidor a una fifo. –
no es necesario llamar '.communicate()' aquí. 'subprocess.check_call ('command', stdout = file)' funciona. – jfs