Erzwingen Sie die Zeilenpufferung von stdout, wenn Sie zum Tee leiten

Meistens,stdout ist zeilengepuffert. Mit anderen Worten, solange Sieprintf Wenn das Argument mit einer neuen Zeile endet, können Sie davon ausgehen, dass die Zeile sofort gedruckt wird. Dies scheint nicht zu gelten, wenn eine Pipe zum Umleiten verwendet wirdtee.

Ich habe ein C ++ - Programm,a, die immer Strings ausgibt\nbeendet, umstdout.

Wenn es von selbst ausgeführt wird (./a) wird alles wie erwartet korrekt und zum richtigen Zeitpunkt gedruckt. Allerdings, wenn ich es pfeifetee (./a | tee output.txt), es wird nichts gedruckt, bis es beendet wird, was den Verwendungszweck zunichte machttee.

Ich weiß, dass ich es durch Hinzufügen von beheben könntefflush(stdout) nach jedem Druckvorgang im C ++ - Programm. Aber gibt es einen saubereren und einfacheren Weg? Gibt es einen Befehl, den ich ausführen kann, der erzwingen würde?stdout auch bei Verwendung einer Pipe zeilengepuffert werden?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage