Очистить буферы потока
#include <stdio.h>
int fflush( FILE *fp );
- fp
NULL
или поток, чьи буферы необходимо очистить.
libc
Если поток, определяемый fp, открыт для вывода или обновления, функция fflush() вызывает запись любых буферизированных (смотрите setvbuf()), но незаписанных данных в файловый дескриптор, связанный с потоком (смотрите fileno()).
Если файл, определяемый fp, открыт для ввода и обновления, функция fflush() отменяет эффект любой предыдущей операции ungetc() для потока.
Если fp равен NULL
, все открытые потоки очищаются.
- 0
- Успешное завершение.
- EOF
- Возникла ошибка. Код ошибки записан в errno.
- EAGAIN
- Флаг
O_NONBLOCK
установлен для файлового дескриптора fp, и операция записи для процесса будет отложена. - EBADF
- Файловый дескриптор fp некорректен.
- EFBIG
- Одна из следующих причин:
- Попытка выполнить запись в файл, достигший максимального размера.
- Попытка выполнить запись в файл, размер которого превышает предельный размер файла процесса.
- Файл является обычным файлом, и произошла попытка выполнить запись с максимальным смещением или за пределы потока.
- EINTR
- Функция fflush() прервана сигналом.
- EIO
- Одна из следующих причин:
- Процесс, являющийся членом группы фоновых процессов, пытается писать в управляющий терминал,
TOSTOP
установлен, процесс ни игнорирует, ни блокирует SIGTTOU
, группа процеса является осиротевшей. - (расширение ЗОСРВ «Нейтрино») Ошибка ввода/вывода во время записи кэшированных данных на носитель.
- (расширение ЗОСРВ «Нейтрино») Ошибка ввода/вывода во время обновления метаданных на носителе.
- (расширение ЗОСРВ «Нейтрино») Файловая система находится на съемном носителе, и этот носитель был принудительно удален.
- ENOSPC
- На устройстве, содержащем файл, не осталось свободного места.
- ENXIO
- Запрос был сделан от лица несуществующего устройства, либо запрос лежит вне возможностей устройства.
- EPIPE
- Попытка записи в канал или FIFO, которые не были открыты для чтения никаким процессом. Потоку также отправляется сигнал
SIGPIPE
.
#include <stdio.h>
#include <stdlib.h>
int main( void )
{
printf( "Press Enter to continue..." );
fflush( stdout );
getchar();
return (EXIT_SUCCESS);
}
ANSI, POSIX 1003.1
- Да
- Обработчик прерываний
- Нет
- Обработчик сигналов
- Нет
- В потоке
- Да
errno, fgetc(), fgets(), fileno(), flushall(), fopen(), getc(), gets(), setbuf(), setvbuf(), ungetc()
Предыдущий раздел: Описание API системной библиотеки