Закрыть поток
#include <stdio.h>
int fclose( FILE *fp );
- fp
- Поток, который планируется закрыть.
libc
Функция fclose() закрывает поток, определяемый fp. Любые незаписанные буферизированные данные сбрасываются в файл перед закрытием. Все непрочитанные буферизированные данные отбрасываются.
Если связанный буфер выделен автоматически, он деаллоцируется.
- 0
- Успешное завершение.
- EOF
- Возникла ошибка. Код ошибки записан в errno.
- EAGAIN
- Флаг
O_NONBLOCK
установлен для файлового дескриптора fp, и операция записи для процесса будет отложена. - EBADF
- Файловый дескриптор fp некорректен.
- EFBIG
- Одна из следующих причин:
- Попытка выполнить запись в файл, достигший максимального размера.
- Попытка выполнить запись в файл, размер которого превышает предельный размер файла процесса.
- Файл является обычным файлом, и произошла попытка выполнить запись с максимальным смещением или за пределы потока.
- EINTR
- Функция fclose() прервана сигналом.
- EIO
- Одна из следующих причин:
- Процесс, являющийся членом группы фоновых процессов, пытается писать в управляющий терминал,
TOSTOP
установлен, процесс ни игнорирует, ни блокирует SIGTTOU
, группа процеса является осиротевшей. - (расширение ЗОСРВ «Нейтрино») Ошибка ввода/вывода во время записи кэшированных данных на носитель.
- (расширение ЗОСРВ «Нейтрино») Ошибка ввода/вывода во время обновления метаданных на носителе.
- (расширение ЗОСРВ «Нейтрино») Файловая система находится на съемном носителе, и этот носитель был принудительно удален.
- ENOSPC
- На устройстве, содержащем файл, не осталось свободного места.
- ENXIO
- Запрос был сделан от лица несуществующего устройства, либо запрос лежит вне возможностей устройства.
- EPIPE
- Попытка записи в канал или FIFO, которые не были открыты для чтения никаким процессом. Потоку также отправляется сигнал
SIGPIPE
.
#include <stdio.h>
#include <stdlib.h>
int main( void )
{
FILE *fp;
fp = fopen( "stdio.h", "r" );
if ( fp != NULL )
{
fclose( fp );
return (EXIT_SUCCESS);
}
return (EXIT_FAILURE);
}
ANSI, POSIX 1003.1
- Да
- Обработчик прерываний
- Нет
- Обработчик сигналов
- Нет
- В потоке
- Да
errno, fcloseall(), fdopen(), fopen(), freopen()
Предыдущий раздел: Описание API системной библиотеки