C эквивалент autoflush (flush stdout после каждой записи)?
В Perl я могу ввести:
$|++;
И все, что печатается в STDOUT, будет автоматически fflush () ed.
Есть ли эквивалент в C? Другими словами, есть ли какой-то способ, которым я могу сказать stdio автоматически fflush stdout после каждого printf (), как он автоматически сбрасывает stderr?
3 ответа:
Я этого не делал, но _IOLBF был бы правильным ответом.
$ man setvbuf
...
имя
setvbuf-назначение буферизации потокуКраткий обзор
#includeint setvbuf(FILE *restrict stream, char *restrict buf, int type, size_t size);
Описание
функция setvbuf() может быть использована после того, как поток, на который указывает stream, связан с открытым файлом, но до выполнения любой другой операции (кроме неудачного вызова setvbuf ()) на поток. Тип аргумента определяет способ буферизации потока следующим образом:* {_IOFBF} shall cause input/output to be fully buffered. * {_IOLBF} shall cause input/output to be line buffered. * {_IONBF} shall cause input/output to be unbuffered.