golang - Unterschied zwischen os.stdout und multiwriter

8

Ich habe diesen Code, um zsh auszuführen und seine Ausgabe in eine Ausgabedatei zu protokollieren.

%Vor%

Wenn das Programm ausgeführt wird, wird ls ausgeben

%Vor%

Wenn ich cmd.Stdout = os.Stdout lasse, wird es korrekt als

angezeigt %Vor%

Was führt zu den Unterschieden zwischen os.Stdout und multiwriter ?

    
boh 31.10.2015, 14:32
quelle

1 Antwort

2

Basierend auf Kommentaren von @Time und @wldsvc

Die Ursache des Problems liegt darin, dass isatty von ls verwendet wird, um das Standardausgabeformat zu wählen. In diesem Fall führt die Verwendung von io.MultiWriter und os.Stdout zu unterschiedlichen Entscheidungen basierend auf dem Ergebnis von isatty .

Die vorgeschlagene Lösung bestand darin, das Ausgabeformat von ls mithilfe der Parameter ( man ls ) zu erzwingen:

%Vor%

(Dokumentieren der Antwort als "Zeige hoch" auf der nicht beantworteten Liste)

    
miltonb 17.11.2015, 22:37
quelle

Tags und Links