博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
文件I/0缓冲
阅读量:5890 次
发布时间:2019-06-19

本文共 1206 字,大约阅读时间需要 4 分钟。

设置stdio流缓冲模式

#include
int setvbuf(FILE *stream,char *buf,int mode,size_t size) int setbuf(FILE *stream,char *buf)//该函数不返回函数结果int setbuffer(FILE *stream,char *buf,size_t size)//类似setbuf函数只是允许指定缓冲区大小

其中mode的值可为

_IONBF不进行缓冲直接读写
_IOLBF进行行缓冲
_IOFBF进行全缓冲
调用函数出错返回非零值

刷新stdio缓冲区

int fflush(FILE *stream)    //刷新到内核缓冲区,若参数为NULL,刷新全部缓冲区

用于控制文件I/O内核缓冲的系统调用

#include
int fsync(int fd)//所有元数据刷新到磁盘int fdatasync(int fd)//只刷新数据到磁盘,元数据不刷新(例如最近更改时间等等属性)void sync(void) //刷新所有数据(包括数据块,元数据等)

混合使用库函数和系统调用进行文件I/O

int fileno(FILE *stream)//该函数用于获取文件流相对应的文件描述符,成功返回文件描述符失败返回-1FILE *fdopen(int fd,const char *mode)//该函数功能是根据文件描述符返回文件流,成功返回文件指针,失败返回NULL,mode可以为r,w,a等

就I/O模式相内核提出建议

#include
int posix_fadvise(int fd,off_t offset,off_t len,int advice)

fd文件描述符,offset起始位置,len长度

成功返回0,失败返回一个负数
其中advice参数可以是:
POSIX_FADV_NORMA 无特别建议,文件预读窗口大小为默认值128kb
POSIX_FADV_SEQUENTIAL 进程估计会从低偏移量到高偏移量顺序读取数据,文件预读窗口大大小为默认值两倍
POSIX_FADV_RANDOM 随机顺序访问数据,在linux中该选项会禁用文件预读
POSIX_FADV_WILLNEED 预计不久就会用到,将数据填充到缓冲区高速缓存中,后续对该文件的读取就会直接从高速缓存中读取数据即可
POSIX_FADV_DONTNEED 在不久的将来不会访问指定的文件区域,释放相关的高速缓存页面(如果存在的话)
POSIX_FADV_NOREUSE 一次性访问指定文件区域,不再复用,访问一次后即可释放页面

转载于:https://www.cnblogs.com/biaopei/p/7730620.html

你可能感兴趣的文章
PHP 程序员的技术成长规划
查看>>
python基础教程_学习笔记19:标准库:一些最爱——集合、堆和双端队列
查看>>
js replace,正则截取字符串内容
查看>>
作业2
查看>>
nginx的信号量
查看>>
云im php,网易云IM
查看>>
DEFERRED_SEGMENT_CREATION
查看>>
Ada boost学习
查看>>
开源 java CMS - FreeCMS2.3字典管理
查看>>
block,inline和inline-block概念和区别
查看>>
移动端常见随屏幕滑动顶部固定导航栏背景色透明度变化简单jquery特效
查看>>
javascript继承方式详解
查看>>
白话讲反射技术 --- 适合初学者入门引导
查看>>
css变形 transform
查看>>
win7家庭版添加组策略编辑器
查看>>
lnmp环境搭建
查看>>
自定义session扫描器精确控制session销毁时间--学习笔记
查看>>
【转】EDK简单使用流程(3)
查看>>
Ubuntu中无法update的解决办法
查看>>
仿射变换
查看>>