In diesem Szenario möchten Sie die Ausgabe eines ausgeführten Befehls sowohl an den übergeordneten Prozess als auch an ein Protokoll streamen Datei. Allerdings gibt die standardmäßige cmd.StdoutPipe das Endergebnis als Zeichenfolge zurück, was bei lang laufenden Prozessen zu einer Einschränkung wird.
Der bereitgestellte Code, der exec.Command verwendet, StdoutPipe und bufio.NewScanner funktionieren wie vorgesehen. Es streamt effektiv die Ausgabe des untergeordneten Prozesses, gibt sie auf der Konsole aus und protokolliert sie in Echtzeit. Die Live-Ausgabe des untergeordneten Prozesses wird erfasst und angezeigt, sobald sie auftritt.
Wenn der Code bei Ihnen nicht funktioniert, berücksichtigen Sie die folgenden Gründe:
Wenn der Befehl keine Zeilenumbrüche ausgibt, gibt es alternative Methoden zum Streamen der Ausgabe:
Es ist wichtig zu bedenken, dass, wenn der untergeordnete Prozess in seine Standardstreams stdout und stderr schreibt, diese verworfen werden, sofern sie nicht explizit gelesen werden. Durch das Lesen dieser Streams wird sichergestellt, dass Sie keine Ausgabe- oder Fehlermeldungen verpassen, auch wenn der untergeordnete Prozess normalerweise keine Ausgaben in diese Streams ausgibt.
Das obige ist der detaillierte Inhalt vonWie streame ich die Befehlsausgabe in Echtzeit an den übergeordneten Prozess und die Protokolldatei?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!