Попен, ожидающий дочерний процесс, даже если непосредственный ребенок завершен

я работаю с Python 2.7 на Windows 8 / XP.

У меня есть программа A, которая запускает другую программу B, используя следующий код:

p = Popen(["B"], stdout=PIPE, stderr=PIPE)
stdout, stderr = p.communicate()
return

B запускает пакетный сценарий C. C - это долгосрочный сценарий, и я хочу, чтобы 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

Любой вклад очень ценится.

Ответы на вопрос(2)

Ваш ответ на вопрос