Python: How to read-stdout der Unterprozess in einer nicht blockierenden Weise

Ich versuche, ein einfaches python-Skript, das startet einen Teilprozess und überwacht seine standard-Ausgabe. Hier ist ein Ausschnitt aus dem code:

process = subprocess.Popen([path_to_exe, os.path.join(temp_dir,temp_file)], stdout=subprocess.PIPE)
while True:   
    output=process.stdout.readline()
    print "test"

Das problem ist, dass das Skript hängt sich auf output=process.stdout.readline() und die Linie print "test" nur ausgeführt wird, nachdem der Teilprozess ist beendet.

Gibt es eine Möglichkeit zum Lesen von standard-Ausgabe und drucken, ohne zu warten, für den Unterprozess zu beenden?

Den Teilprozess der ich mich ab, ist eine Windows-binary für die ich nicht den source-code.

Ich fand mehrere ähnliche Fragen, aber die Antworten sind nur anwendbar auf Linux oder im Fall habe ich die Quelle der suprocess ich mich ab.

  • Ich glaube, Sie brauchen, um mehr details zu bieten über Ihre ausführbare Datei. Was ist die Beispiel-Ausgabe des binären? Eine einzige Leitung, oder viele? Es Art von klingt wie das binäre ist schlecht geeignet für eine solche Schnittstelle. In der Ausgabe wird nur geleert, wenn eine Folge von dem binären beenden.
  • Eigentlich will ich fuzz verschiedene Programme (Acrobat reader, aber auch andere) und zu erkennen, stürzt ab. Ich kann die Exit-code, aber ich würde auch gerne die standard-Ausgabe/Fehler.
InformationsquelleAutor stanko | 2016-04-07
Schreibe einen Kommentar