2009-07-28 2 views
0

У меня есть код, который использует pip, чтобы загружать Python envionment для процесса сборки: это прекрасный способ обеспечить правильную изоляцию требований сборки от остальной хост-системы и помочь нам получить более последовательные результаты сборки в общем и целом.Как подождать ребенка, который возрождается с помощью os.execv() на win32?

В любом случае, код, который у меня есть, имеет pip.py, похоже, есть проблемы с окнами. Проблема в том, что я создаю процесс pip из сценариев начальной загрузки, используя subprocess.Popen(), а затем жду, пока процесс завершится, но это происходит слишком рано из-за того, что pip использует execv, чтобы перезапустить себя под новым созданным virtualenv. Когда это случается, мой родитель видит, что ребенок вышел с кодом выхода 0, и он продолжает на нем веселье.

Итак, вопрос прост: как я могу справиться с вызовом os.execv() из дочернего процесса на win32, где я могу установить код возврата только что выполненного дочернего процесса?

ответ

0

Я не могу придумать какой-либо плавный способ справиться с этим. Это может звучать грязно, но, возможно, вы могли бы работать с удалением файлов флагов в файловую систему во время работы вашего сценария и ждать, пока эти файлы будут очищены?

+0

Файл флага звучит как жизнеспособное решение, не так уж плохо иметь пустой файл, чтобы проверить что-то подобное в моем примере –