当前位置:首页 » 《随便一记》 » 正文

C语言IO操作fread/fwrite/fflush

15 人参与  2022年11月30日 16:25  分类 : 《随便一记》  评论

点击全文阅读


参考
1
2

IO操作

fread/fwrite/fflush:

c语言标准规定的io流操作,建立在read/write/fsync之上;在用户层, 又增加了一层缓冲机制,用于减少内核调用次数,但是增加了一次内存拷贝;

read/write/fsync:

linux底层操作;内核调用, 涉及到进程上下文的切换,即用户态到核心态的转换,这是个比较消耗性能的操作;

两者之间的关系如下:
在这里插入图片描述
可以将fread,fwrite是一种批量写入,而read,write是单次写入的形式来理解。
write是系统调用,每次需要将数据写到磁盘,写的大小是要求的大小,依然涉及频繁的用户态和内核态切换;
fwrite是库函数,每次将数据写入到缓冲区,等缓冲区满了,一次写入磁盘。或者使用 fflush 冲洗缓冲区;
fflush:是把C库中的缓冲调用write函数写到磁盘(其实是写到内核的缓冲区)。
fsync:是把内核缓冲刷到磁盘上。

注意:

(1)fwrite
fwrite每次将数据写入到缓冲区,等缓冲区满了,一次写入磁盘;存在延迟写入、或对线程访问文件数据异常问题;为解决该问题,可使用fflush()函数,及时刷新缓存、写入;
(2)fflush:标准I/O函数(如:fread,fwrite)会在内存建立缓冲,该函数刷新内存缓冲,将内容写入内核缓冲,要想将其写入磁盘,还需要调用fsync。(先调用fflush后调用fsync,否则不起作用)。
(3)fflush()与fsync()的联系:
对于输入设备,调用fsync/fflush将清空相应的缓冲区,其内数据将被丢弃;对于输出设备或磁盘文件,fflush只能保证数据到达内核缓冲区,并不能保证数据到达物理设备, 因此应该在调用fflush后,调用fsync(fileno(stream)),确保数据存入磁盘。
(4)fdatasync:类似fsync,但它只影响文件的数据部分;
fdatasync与fsync的区别在于fdatasync不会flush文件的metadata信息;这个是为了减少对磁盘的操作;如果以块为单位知道写入多少数据,可以使用fdatasync;
如下:

#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>int main(int argc, char **argv){        FILE *fp = fopen("test.txt","w");        char *line ="Test";        char *fill ="\0";        fwrite(fill, 1, 100*strlen(line), fp);        fflush(fp);        fsync(fileno(fp));        rewind(fp);        for (int i = 0; i < 100; i++){                fwrite(line, strlen(line), 1, fp);                fflush(fp);                fdatasync(fileno(fp));        }}

点击全文阅读


本文链接:http://m.zhangshiyu.com/post/49300.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 填错志愿后,我成了活神仙章节目录_顾言姜澈林晓晓优质全文_小说后续在线阅读_无删减免费完结_
  • 沈亦初秦景泽后续(以后,她都不要再喜欢他了)(沈亦初秦景泽)整本畅享在线+无广告结局
  • 独家猎户夫君你轻点宠小说(云柔苏安)(猎户夫君你轻点宠)电子书畅享阅读
  • 全网首发容止洛云曦小说叫什么(他死后女帝火葬场了)(容止洛云曦)全书阅读纯净阅读
  • 周砚川战景熙小说章节目录+序章(离婚后,保镖前夫他成了财阀大佬)全书畅享在线
  • 碎骨惨死后,我与宿敌联手弑夫证道特别篇章节目录+章节前文(齐南韵柳苑云)TXT清爽版在线
  • 重生八零年代点天灯后,崇洋***的养妹疯了章节目录_肖颖芝江天肖星苒书荒_小说后续在线阅读_无删减免费完结_
  • 最新章节(姜小九徐琛)霸婚总裁小蛮妻:结局+番外精品选集附加章节列表
  • 死后十年,妈妈收到我的死亡通知高口碑_妹妹爸爸妈妈大丫隐藏剧情_小说后续在线阅读_无删减免费完结_
  • 邻居连续偷菜93天小说(林婉清顾星河)章节目录+起点章节(邻居连续偷菜93天)全篇清爽版在线
  • 何时慢顾砚之后续(你惹她干嘛?她带四十米大刀来了)(何时慢顾砚之)整本畅享在线+无广告结局
  • 结婚纪念日当天,老公说他出差了必读文_陆言林姗老公内容精选_小说后续在线阅读_无删减免费完结_

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1