Я работаю с Python 2.7 на Windows 8/XP.
У меня есть программа A, которая запускает другую программу B, используя следующий код:
p = Popen(["B"], stdout=PIPE, stderr=PIPE)
stdout, stderr = p.communicate()
return
B запускает пакет script C. C - длинный script, и я хочу, чтобы B выходил, даже если C не закончил. Я сделал это, используя следующий код (в B):
p = Popen(["C"])
return
Когда я запускаю B, он работает так, как ожидалось. Однако, когда я запускал A, я ожидал, что он выйдет, когда B выйдет. Но A ждет, пока C не выйдет, хотя B уже вышел. Любые идеи о том, что происходит и какие возможные решения могут быть?
К сожалению, очевидное решение об изменении A, чтобы выглядеть как B, не является вариантом.
Вот пример функционального примера для иллюстрации этой проблемы: https://www.dropbox.com/s/cbplwjpmydogvu2/popen.zip?dl=1
Приветствуется любой ввод.