Поделиться через


fclose, _fcloseall

Закрывает поток (fclose) или все открытые потоки (_fcloseall).

Синтаксис

int fclose(
   FILE *stream
);
int _fcloseall( void );

Параметры

stream
Указатель на структуру FILE .

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

Функция fclose возвращает 0, если поток был успешно закрыт. Функция _fcloseall возвращает общее количество закрытых потоков. Обе функции возвращают EOF для указания на ошибку.

Замечания

Функция fclose закрывает stream. В противном stream NULLслучае вызывается недопустимый обработчик параметров, как описано в разделе "Проверка параметров". Если выполнение может быть продолжено, функция fclose присваивает errno значение EINVAL и возвращает EOF. Перед вызовом stream этой функции рекомендуется всегда проверять указатель.

Дополнительные сведения о кодах возврата см. в разделе errno, _doserrno_sys_errlistи _sys_nerr.

Функция _fcloseall закрывает все открытые потоки, кроме stdin, stdout, stderr (а в MS-DOS также _stdaux и _stdprn). Она также закрывает и удаляет все временные файлы, созданные tmpfile. При использовании обеих функций все буферы, связанные с потоком, перед закрытием сбрасываются. При закрытии потока выделенные системой буферы освобождаются. Буферы, назначенные пользователем и setbuf setvbuf не выпускаются автоматически.

Примечание.

Когда fclose или _fcloseall функции используются для закрытия потока, базовый дескриптор файлов и дескриптор OS (или сокет) также закрываются. Таким образом, если файл был первоначально открыт как дескриптор файла или дескриптор файла и закрыт с fcloseпомощью, не вызывайте _close дескриптор файла и не вызывайте функцию CloseHandle Win32, чтобы закрыть дескриптор файла.

Функции fclose и _fcloseall включают код для защиты от помех от других потоков. Сведения о неблокирующей версии fclose см. в описании функции _fclose_nolock.

По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.

Требования

Function Обязательный заголовок
fclose <stdio.h>
_fcloseall <stdio.h>

Дополнительные сведения о совместимости см. в разделе Совместимость.

Пример

Пример см. в примере fopen.

См. также

Потоковый ввод-вывод
_close
_fdopen, _wfdopen
fflush
fopen, _wfopen
freopen, _wfreopen