关于write()和fsync()

关于write()和fsync()writessize_twrite(intfd,constvoid*buf,size_tcount);将数据写到文件中.注意,如果文件是保存在硬盘中,write()函数调用返回之后,并不表示数据已经写入到硬盘中,这时如果掉电,数据可能会丢失.fsyncintfsync(intfd);程序调用本函数,通知内核把数据写到硬盘(file)中.比如,…

大家好,又见面了,我是你们的朋友全栈君。

write

ssize_t write(int fd, const void *buf, size_t count);

将数据写到文件中. 注意, 如果文件是保存在硬盘中, write() 函数调用返回之后, 并不表示数据已经写入到硬盘中, 这时如果掉电, 数据可能会丢失.

fsync

int fsync(int fd);

程序调用本函数, 通知内核把数据写到硬盘(file)中. 比如, 你开发一个数据库软件, 就需要这样的函数, 否则掉电或者系统崩溃时便会丢失数据.

如果你的程序不调用 fsync(), Linux 内核也会自动在”合适”的时候将你的数据真正写入到硬盘(类似调用 fsync), 最长的延时默认是 30 秒.

阻塞 

阻塞是 IO 的精华所在, 不管是文件 IO 还是网络 IO, 只有真正了理解了 IO 阻塞, 才能做出所谓在高并发高性能软件(服务器).

当 fsync() 和 write() 同一个 fd 时, write() 必然阻塞. 当系统 IO 非常繁忙时, fsync() 可能会阻塞, 即使系统 IO 不繁忙, fsync() 也会因为数据量大而慢.

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/138474.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 键盘win键没反应?估计是锁了[通俗易懂]

    键盘win键没反应?估计是锁了[通俗易懂]今个想打开cmd,发现win+R竟然没反应,随后进行排查,发现只有键盘的win键不能用,笔记本原配可以用在网上翻了万能网友的记录后,才知道键盘的win键被上锁一般使用fn+win解锁但是IKBC很扯淡,IKBC必须按fn+右侧的win祝你成功,我的朋友…

  • html右浮动代码_html+css+js

    html右浮动代码_html+css+js网上一般的网页浮动广告代码都是基于jquery的,受jiquery版本及浏览器限制,非常容易出现不兼容的情况,本站分享一段纯js网页浮动广告代码,简单兼容。html代码:javascript代码:window.onload=function(){varx=50,y=60;varxin=true,yin=true;varstep=1;vardelay=10;varobj=docu…

  • 使用cookie登录百度网盘(网站使用cookie)

    cookies2.txt为存放cookie字符串的文件。cookie字符串获取方式1.可以通过手动的方式去取,比如登录之后在console里面执行document.cookie即可获得2.在application里面查看cookie的值3.通过webdriver.Chrome(…)创建出来的实例,调用get_cookies()就可以获取到…

  • eth挖矿显卡的选择_挖矿一般用什么显卡

    eth挖矿显卡的选择_挖矿一般用什么显卡以太坊显卡挖矿指南1.显卡篇挖矿靠显卡核心计算,所以AMD显卡比NVIDA卡更高效。选择AMD卡,要求显卡显存大于2G,推荐购买4G显存显卡.目前市面上可购选择的显卡品牌型号还有速度.蓝宝石-影驰-技嘉-索泰-讯景-微星-迪兰-盈通#显卡型号操作系统挖矿速度驱动版本显卡功耗

  • IDEA 控制台乱码 解决方法[通俗易懂]

    IDEA 控制台乱码 解决方法[通俗易懂]IDEA如果不进行配置的话,运行程序时控制台就会中文乱码,严重影响我们对信息的观察和程序的跟踪.非常的痛苦,那么上解决方法

  • Java指令编译java文件

    Java指令编译java文件Java指令编译java文件1.进入cmd2.编译2.1切换不同JDK编译文件3.运行1.进入cmd如何快速进入/打开cmd–快捷键在源代码目录输入cmd,然后回车2.编译如果出现错误:编码GBK的不可映射字符(0x8D)需要在javac后面加上-encodingUTF-8javac-encodingUTF-8编译的文件.java这时候就会多出.class文件,就是字节码文件了。2.1切换不同JDK编译文件一般JDK配置好了,直接用javac

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号