fclose_fcloseall

关闭流 (fclose) 或关闭所有打开的流 (_fcloseall)。

语法

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

参数

stream
指向 FILE 结构的指针。

返回值

如果已成功关闭流,则 fclose 返回 0。 _fcloseall 返回已关闭流的总数。 这两个函数都返回 EOF,表示出现错误。

备注

fclose 函数关闭 stream。 如果 streamNULL,则会调用无效的参数处理程序,如参数验证中所述。 如果允许继续执行,则 fcloseerrno 设置为 EINVAL 并返回 EOF。 建议在调用此函数之前务必检查 stream 指针。

有关返回代码的详细信息,请参阅 errno_doserrno_sys_errlist_sys_nerr

_fcloseall函数将关闭所有打开的流,stdinstdoutstderr(以及在 MS-DOS 中的 _stdaux_stdprn)除外。 它还将关闭并删除 tmpfile 所创建的任何临时文件。 在这两个函数中,与流相关联的所有缓冲区在关闭前都会进行刷新。 系统分配的缓冲区在流关闭时释放。 用户使用 setbufsetvbuf 分配的缓冲区不会自动释放。

注意

fclose_fcloseall 函数用于关闭流时,基础文件描述符和 OS 文件句柄(或套接字)都将被关闭。 因此,如果文件最初作为文件句柄或文件描述符打开并使用 fclose 关闭,则不要同时调用 _close 来关闭文件描述符;不要调用 Win32 函数 CloseHandle 来关闭文件句柄。

fclose_fcloseall 包含可抵御来自其他线程干扰的代码。 有关 fclose 的非锁定版本,请参阅 _fclose_nolock

默认情况下,此函数的全局状态范围限定为应用程序。 若要更改此行为,请参阅 CRT 中的全局状态

要求

函数 必需的标头
fclose <stdio.h>
_fcloseall <stdio.h>

有关兼容性的详细信息,请参阅 兼容性

示例

请参阅 fopen 的示例。

另请参阅

流 I/O
_close
_fdopen_wfdopen
fflush
fopen_wfopen
freopen_wfreopen