Обычно stdout
буферизуется строкой -. Другими словами, пока ваш аргумент printf
заканчивается новой строкой, вы можете ожидать, что строка будет напечатана мгновенно. Это не работает при использовании канала для перенаправления на tee
.
У меня есть программа на C++ a
, которая всегда выводит строки \n
-. прекращено, на stdout
.
Когда он запускается сам по себе(./a
), все печатает правильно и в нужное время, как и ожидалось. Однако, если я передам это наtee
(./a | tee output.txt
), он ничего не печатает, пока не завершит работу, что противоречит цели использования tee
.
Я знаю, что могу это исправить, добавляя fflush(stdout)
после каждой операции печати в программе на C++. Но есть ли более чистый и простой способ? Есть ли команда, которую я могу запустить, например, которая заставит stdout
буферизовать строку -даже при использовании канала?