Wie rufe ich den Exit-Code ab, wenn ich das Python- subprocess
Modul und die communicate()
Methode verwende?
Relevanter Code:
import subprocess as sp
data = sp.Popen(openRTSP + opts.split(), stdout=sp.PIPE).communicate()[0]
Soll ich das anders machen?
python
subprocess
Carpe Noctem
quelle
quelle
from subprocess import Popen
und dann einfach verwenden,Popen
stattdessensubprocess(or sp).Popen
würde ich sagen, erhöht wahrscheinlich die Lesbarkeit und verkürzt die Zeilenprocess.communicate()
und dannreturncode
einer Variablen zuweisen . Wenn die Zuweisung vor dem Anrufcommunicate
erfolgt ist, istNone
.Sie sollten zunächst sicherstellen, dass der Prozess vollständig ausgeführt wurde und der Rückkehrcode mithilfe der
.wait
Methode ausgelesen wurde . Dies gibt den Code zurück. Wenn Sie später darauf zugreifen möchten, wird es wie.returncode
imPopen
Objekt gespeichert .quelle
.communicate()
wartet bereits auf die Beendigung des Unterprozesses..poll()
aktualisiert den Rückkehrcode.Versuchen
Darüber hinaus ist nach dem
.poll()
Aufruf der Rückkehrcode im Objekt als verfügbarchild.returncode
.quelle
exitcode = data.wait()
. Der untergeordnete Prozess wird blockiert, wenn er in die Standardausgabe / den Standardfehler schreibt und / oder von der Standardeingabe liest und keine Peers vorhanden sind.quelle
Das hat bei mir funktioniert. Außerdem wird die vom untergeordneten Prozess zurückgegebene Ausgabe gedruckt
quelle