Wypełniaj oczekiwanie na proces potomny, nawet gdy bezpośrednie dziecko zakończy się

Pracuję z Pythonem 2.7 na Windows 8 / XP.

Mam program A, który uruchamia inny program B, używając następującego kodu:

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

B uruchamia skrypt wsadowy C. C jest długim skryptem i chcę, aby B zakończył działanie, nawet jeśli C nie zostało zakończone. Zrobiłem to za pomocą następującego kodu (w B):

p = Popen(["C"])
return

Kiedy uruchamiam B, działa zgodnie z oczekiwaniami. Kiedy jednak uruchomię A, spodziewałem się, że wyjdzie, gdy B zakończy działanie. Ale A czeka, aż C wyjdzie, nawet jeśli B już się wyłączył. Jakieś pomysły na to, co się dzieje i jakie mogą być możliwe rozwiązania?

Niestety, oczywiste rozwiązanie zmiany A na wygląd B nie jest opcją.

Oto funkcjonalny przykładowy kod ilustrujący ten problem:https://www.dropbox.com/s/cbplwjpmydogvu2/popen.zip?dl=1

Każdy wkład jest bardzo doceniany.

questionAnswers(2)

yourAnswerToTheQuestion