setlinebuf()

Использовать буферизацию строк в потоке

Прототип:

#include <unix.h>
int setlinebuf( FILE *iop );

Аргументы:

iop
Поток, для которого требуется буферизация строк.

Библиотека:

libc

Описание:

Функции setbuffer() и setlinebuf() назначают буферизацию потоку. Доступны следующие типы буферизации:

Небуферизованный
Информация появляется в целевом файле или терминале сразу после записи.
Блочная буферизация
Символы буферизируются и записываются блоками.
Строчная буферизация
Символы буферизируются пока не встретится новая строка или не будет считан ввод из стандартного потока stdin.

Для форсирования записи блока используется вызов fflush(). Как правило, все файлы имеют блочную буферизацию. Буфер создается через malloc(), когда для файла первый раз вызывается getc() или putc(). Если стандартный поток stdout ссылается на терминал, то он имеет строчную буферизацию. Стандартный поток stderr по умолчанию небуферизован.

Функция setlinebuf() используется для изменения типа буферизации потока с блочного или небуферизованного на строчную буферизацию. В отличие от функции setbuffer(), функцию setlinebuf() можно вызвать в любое время, когда поток iop активен.

Функция freopen() позволяет изменить тип буферизации потока с небуферизованного или строчного на блочную буферизацию. Для изменения типа буферизации потока с блочного или строчного на небуферизованный используется функция freopen(), а затем вызов setbuf() с параметром buffer равным NULL.

Возвращаемое значение:

Не содержит полезного значения.

Классификация:

Unix

Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Нет
В потоке
Да

Тематические ссылки:

fclose(), fflush(), fopen(), fread(), freopen(), getc(), malloc(), printf(), putc(), puts(), setbuf(), setbuffer(), setvbuf()




Предыдущий раздел: Описание API системной библиотеки