_flushall

刷新所有流;清除所有缓冲区。

语法

int _flushall( void );

返回值

_flushall 返回打开的流(输入和输出)的数量。 无错误返回。

备注

默认情况下,_flushall 函数会向相应的文件中写入与打开的输出流关联所有缓冲区的内容。 与打开的输入流关联的所有缓冲区的当前内容将被清除。 (这些缓冲区通常由操作系统维护,操作系统确定将数据自动写入磁盘的最佳时间:当缓冲区已满时、当流已关闭时或当程序在未关闭流的情况下正常终止时。)

如果在调用 _flushall 后进行读取,则会将输入文件中的新数据读取到缓冲区中。 在调用 _flushall 后,所有流将保持打开状态。

利用运行库的提交到磁盘功能,您可以确保将关键数据直接写入磁盘而不是操作系统的缓冲区。 无需重写现有程序,可以通过将程序的对象文件与 Commode.obj 链接来启用此功能。在生成的可执行文件中,调用 _flushall 会将所有缓冲区的内容写入磁盘中。 仅 _flushallfflush 受 Commode.obj 的影响。

有关控制提交到磁盘功能的信息,请参阅流 I/Ofopen_fdopen

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

要求

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

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

示例

// crt_flushall.c
// This program uses _flushall
// to flush all open buffers.

#include <stdio.h>

int main( void )
{
   int numflushed;

   numflushed = _flushall();
   printf( "There were %d streams flushed\n", numflushed );
}
There were 3 streams flushed

另请参阅

流 I/O
_commit
fclose_fcloseall
fflush
setvbuf