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指针始终检查才能调用此函数。

请参阅 _doserrno、 errno、 _sys_errlist 和 _sys_nerr 有关这些和其他错误代码的详细信息。

The _fcloseall function closes all open streams except stdin, stdout, stderr (and, in MS-DOS, _stdaux and _stdprn). 它还将关闭并删除创建的任何临时文件tmpfile。 在这两个函数中,流相关联的所有缓冲区都刷新前到结束。 关闭流时,将释放系统分配的缓冲区。 用户使用其指定的缓冲区setbuf和setvbuf不会自动释放。

注意: 时关闭流中使用这些函数时,基础文件描述符和操作系统文件句柄的套接字) 都将关闭,以及该流。 因此,如果打开的文件作为文件处理或文件描述符并关闭与fclose,也不执行调用_close关闭的文件描述符。 不调用 Win32 函数CloseHandle关闭文件句柄。

fclose和_fcloseall包含代码,以针对其他线程干扰的保护。 对于非锁定版本的fclose,请参阅_fclose_nolock。

要求

功能

所需的页眉

fclose

<stdio.h>

_fcloseall

<stdio.h>

其他兼容性信息,请参阅兼容性的介绍。

示例

有关示例,请参阅 fopen

.NET Framework 等效项

请参见

参考

流I/O

_close

_fdopen, _wfdopen

fflush

fopen, _wfopen

freopen, _wfreopen