Popen espera pelo processo da criança mesmo quando o filho imediato tiver terminado
Estou trabalhando com o Python 2.7 no Windows 8 / XP.
Eu tenho um programa A que executa outro programa B usando o seguinte código:
p = Popen(["B"], stdout=PIPE, stderr=PIPE)
stdout, stderr = p.communicate()
return
B executa um script em lote C. C é um script de longa execução e desejo que B saia embora C ainda não tenha terminado. Eu fiz isso usando o seguinte código (em B):
p = Popen(["C"])
return
Quando eu corro B, funciona como esperado. Quando eu executo A, no entanto, eu esperava que ele saísse quando B sair. Mas A espera até C sair, embora B já tenha saído. Alguma idéia do que está acontecendo e quais possíveis soluções poderiam ser?
Infelizmente, a solução óbvia de mudar A para parecer B não é uma opção.
Aqui está um código de exemplo funcional para ilustrar esse problema:https://www.dropbox.com/s/cbplwjpmydogvu2/popen.zip?dl=1
Qualquer entrada é muito apreciada.