Frage

Diese Frage ist sehr ähnlich zu Dieses hier. Ich möchte die Ausgabe von einer Konsolen -App von mir lesen. Die App endet weder noch nimmt sie Eingaben von stdin an.

Wenn ich die Lösung von RIX0RRR modifiziere, um meine App auszuführen und dann seine Lösung auszuführen, hängt Python auf, weil Read (1) nicht zurückkehrt. Die anfängliche Ausgabe der App ist "Starten des Servers. N". Können Sie erraten, welche Eigenschaft meine App hat, die seine Lösung daran hindert? Das Ausmaß meiner Änderungen ist, dass ich dies geändert habe:

p = Popen( ["cmd.exe"], stdin=PIPE, stdout=PIPE )
prompt = re.compile(r"^C:\\.*>", re.M)

dazu:

p = Popen( ["c:\\path\\to\\my\\app\\app.exe"], stdin=PIPE, stdout=PIPE )
prompt = re.compile(r"Starting", re.M)
import pdb;pdb.set_trace()

Ich habe auch eine Testversion meiner App erstellt, die sofort zurückgibt und überprüft, ob die Ausgabe der App in diesem Fall von Read () zurückgegeben wird. Sein ursprüngliches, nicht modifiziertes Beispiel hängt wie erwartet auch nicht.

Ich habe auch den Aktivitätscode ausprobiert, mit dem PIOTR in seiner Antwort verlinkt. Auch in diesem Fall wird keine Ausgabe aus dem Prozess zurückgegeben.

Dies ist Python 2.4.4 auf Vista.

War es hilfreich?

Lösung

Das allererste, was ich überprüfen würde, ist die Pufferung in App.exe. Wenn "den Server starten.

Versuchen Sie also hinzuzufügen fflush(stdout) nach printf("Starting the server.\n").

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top