So ermitteln Sie subprocess.Popen () fehlgeschlagen, wenn Shell = True

7

Windows-Version von Python 2.6.4: Gibt es eine Möglichkeit festzustellen, ob subprocess.Popen () bei Verwendung von shell = True fehlschlägt?

Popen () schlägt fehl, wenn Shell = False

ist %Vor%

Aber wenn Shell = True ist, scheint es keine Möglichkeit zu geben festzustellen, ob ein Popen () - Aufruf erfolgreich war oder nicht.

%Vor%

Ideen geschätzt.

Grüße, Malcolm

    
Malcolm 18.05.2010, 22:19
quelle

2 Antworten

15

returncode funktioniert, obwohl es None ist, bis Sie p.poll() aufgerufen haben. poll() selbst gibt den Fehlercode zurück, so dass Sie einfach

ausführen können %Vor%     
Michael Mrozek 18.05.2010, 22:27
quelle
5

Im ersten Fall startet es nicht, im zweiten Fall startet es erfolgreich die Shell, die wiederum die Anwendung nicht ausführen kann. Ihr Prozess wurde also korrekt gestartet, verlassen und wartet darauf, dass Sie sich nach seinem Beendigungscode erkundigen. Also, die Sache ist, wenn Ihre Shell oder Umgebung (z. B. kein Speicher) völlig gebrochen ist, gibt es keine Möglichkeit Popen selbst kann fehlschlagen .

Sie können also sicher .poll() und .wait() darauf setzen, um all die traurigen Nachrichten zu bekommen.

    
Michael Krelin - hacker 18.05.2010 22:27
quelle

Tags und Links