名称
fflush – 冲刷流
概要
#include <stdio.h>
int fflush(FILE *stream);
说明
对于输出流来说,fflush强制写所有用户空间缓冲的数据,或者通过流的底层写函
数更新流。
对于跟可做位置偏移操作的文件(比如磁盘,但不能是管道也不能是终端)绑定的
输入流来说,fflush丢弃所有已经从底层文件获取到但并未被应用程序消费掉的缓
冲数据。
流的打开状态不受影响。
如果参数stream为NULL,则fflush冲刷所有的已打开的流。
关于非阻塞的实现,参考unlocked_stdio。
返回值
成功返回0,否则返回EOF并且errno被设置为对应的错误码。
错误码
EBADF 流没有打开,或者没有以写方式打开流。
fflush也可能会因为write失败而失败,此时errno对应write的错误。
线程安全特征
接口 | 特征 | 值 |
fflush() | 线程安全 | 多线程安全 |
标准
C89, C99, POSIX.1-2001, POSIX.1-2008。
POSIX.1-2001并没有规定冲刷一个输入流的实现,但是POSIX.1-2008对此做了规
定。
注意
fflush只冲刷由C库实现的用户空间的缓冲。为了保证数据存储到硬盘,必须冲刷
内核的缓冲,例如调用sync,fsync。
推荐阅读
fsync,sync,write,fclose,fopen,setbuf,unlocked_stdio
版本记录
这个页面是Linux man-pages项目4.04版本的一部分。关于该项目的信息和bug
报道可以在该网站找到:http://www.kernel.org/doc/man-pages/。
2015- 03-02