Popen espera el proceso del niño, incluso cuando el niño inmediato ha terminado
Estoy trabajando con Python 2.7 en Windows 8 / XP.
Tengo un programa A que ejecuta otro programa B usando el siguiente código:
p = Popen(["B"], stdout=PIPE, stderr=PIPE)
stdout, stderr = p.communicate()
return
B ejecuta una secuencia de comandos por lotes C. C es una secuencia de comandos de larga ejecución y quiero que B salga aunque C no haya terminado. Lo he hecho usando el siguiente código (en B):
p = Popen(["C"])
return
Cuando ejecuto B, funciona como se esperaba. Cuando ejecuto A, sin embargo, esperaba que saliera cuando B salga. Pero A espera hasta que C salga aunque B ya haya salido. ¿Alguna idea sobre lo que está pasando y qué soluciones posibles podrían ser?
Desafortunadamente, la solución obvia de cambiar A para parecer B no es una opción.
Aquí hay un código de ejemplo funcional para ilustrar este problema:https://www.dropbox.com/s/cbplwjpmydogvu2/popen.zip?dl=1
Cualquier aporte se agradecerá.