Принудительно буферизировать stdout при подключении к тройнику

Обычно,stdout является буферизованной строкой. Другими словами, пока вашprintf Аргумент заканчивается новой строкой, вы можете ожидать, что строка будет напечатана мгновенно. Это не похоже на удержание при использовании канала для перенаправления наtee.

У меня есть программа на C ++,aвсегда выводит строки\n-определено, чтобыstdout.

Когда он запускается сам по себе (./a), все печатается правильно и в нужное время, как и ожидалось. Однако, если я передам этоtee (./a | tee output.txt), он ничего не печатает, пока не выйдет, что противоречит цели использованияtee.

Я знаю, что я мог бы это исправить, добавивfflush(stdout) после каждой операции печати в программе C ++. Но есть ли чище, проще? Например, есть ли команда, которая может выполнитьstdout быть буферизованным, даже при использовании канала?

Ответы на вопрос(5)

Ваш ответ на вопрос