Хотя я не вижу этого в C99, setlinebuf () - это функция, которая была доступна в любом CI, в котором она была необходима. Вызов setlinebuf () перед первым выводом в файл вызывает каждую строкунемедленно выйти с использованием "буферизации строки".
f = fopen("log.txt", "w");
if ( !f )
oops();
if ( debugging_mode )
setlinebuf( f );
Нет необходимости в отдельных вызовах fflush (), fsync () и т. д.
Осторожно, это замедляет программы, выполняющие много выводапоэтому резервирование его для режима отладки может быть важно для производительности некоторых программ.
Если у вас нет setlinebuf (), попробуйте следующее, например C99:
setvbuf(f, (char *)NULL, _IOLBF, 0);