Stream-Child-Prozessausgabe im Fließmodus

8

Ich habe eine benutzerdefinierte Befehlszeile geschrieben mit Python, die ihre Ausgabe mit der Anweisung "print" ausgibt. Ich benutze es von Node.js, indem ich einen Child-Prozess hervorbringe und Befehle an ihn über die Methode child.stdin.write sende. Hier ist die Quelle:

%Vor%

Das Problem ist nun, dass ich die Ausgabe im Fließmodus nicht erhalte. Ich möchte die Ausgabe von Kindprozess erhalten, sobald es gedruckt wird, aber ich erhalte die Ausgabe aller Befehle nur, wenn der untergeordnete Prozess beendet wird (mit dem Befehl Beenden von cli).

    
iFadey 17.09.2013, 11:50
quelle

2 Antworten

8

Sie müssen die Ausgabe im untergeordneten Prozess leeren.

Wahrscheinlich denken Sie, dass dies nicht notwendig ist, weil die Bibliothek beim Testen und bei der Ausgabe auf einem Terminal sich selbst entleert (z. B. wenn eine Zeile vollständig ist). Dies geschieht nicht, wenn der Druck (aus Leistungsgründen) an eine Pipe gesendet wird.

Spülen Sie sich selbst:

%Vor%     
Alfe 17.09.2013, 12:01
quelle
4

Am besten verwenden Sie den ungepufferten Modus der Python-Standardausgabe. Es wird Python zwingen, Ausgaben in Ausgabeströme zu schreiben, ohne sich selbst zu leeren.

Zum Beispiel:

%Vor%     
Nikola M. 12.10.2014 12:31
quelle

Tags und Links