2009-07-28 14 views
0

Ich habe einen Code, der pip verwendet, um eine Python-Umgebung für den Out-Build-Prozess zu booten: Dies ist eine schöne Möglichkeit, die Build-Anforderungen vom Rest des Host-Systems zu isolieren und konsistentere Build-Ergebnisse zu erhalten insgesamt.Wie man auf ein Kind wartet, das sich mit os.execv() auf win32 respawnt?

Wie auch immer, der Code, den ich habe pip.py Laufwerke scheint einige Probleme auf Windows haben. Das Problem ist, dass ich den Prozess pip von meinem Bootstrapping-Skripte mit subprocess.Popen() starten und dann auf den Prozess warten, aber dies geschieht zu früh aufgrund der Tatsache, dass pipexecv verwendet, um sich unter dem neuen virtualenv neu zu erstellen es erstellt. Wenn dies passiert, sieht mein Elternteil, dass das Kind mit einem Exitcode von 0 verlassen wurde und es macht weiter so.

Also die Frage ist einfach: Wie kann ich mit einem os.execv() Anruf von einem Kindprozess auf Win32 in Art und Weise umgehen, wo ich den Rückkehrcode des neu ausgeführten Kindprozesses feststellen kann?

Antwort

0

Ich kann mir keine glatte Art vorstellen, damit umzugehen. Dies mag sich schmutzig anhören, aber vielleicht könnten Sie mit dem Löschen von Flag-Dateien auf das Dateisystem arbeiten, während das Skript läuft, und warten, bis diese Dateien bereinigt sind.

+0

Eine Flag-Datei klingt wie eine brauchbare Lösung, es ist nicht so schlimm, eine leere Datei zu haben, um in meiner Meinung nach so etwas zu überprüfen –