Wymuszaj buforowanie linii stdout podczas łączenia z trójnikiem

Zazwyczaj,stdout jest buforowany liniowo. Innymi słowy, tak długo jak twójprintf argument kończy się znakiem nowej linii, możesz oczekiwać, że linia zostanie wydrukowana natychmiast. Nie wydaje się to mieć miejsca, gdy używana jest rura do przekierowaniatee.

Mam program C ++,a, który zawsze wysyła ciągi\n-terminowane, dostdout.

Kiedy jest uruchamiany samodzielnie (./a) wszystko jest drukowane poprawnie i we właściwym czasie, zgodnie z oczekiwaniami. Jeśli jednak to zrobiętee (./a | tee output.txt), nie drukuje niczego, dopóki nie zakończy pracy, co jest sprzeczne z celem użyciatee.

Wiem, że mogę to naprawić, dodającfflush(stdout) po każdej operacji drukowania w programie C ++. Ale czy istnieje bardziej czysty i łatwy sposób? Czy jest na przykład polecenie, które mogłoby wymusićstdout być buforowane liniowo, nawet przy użyciu rury?

questionAnswers(5)

yourAnswerToTheQuestion