关于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() 也会因为数据量大而慢.

 

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

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

(0)
上一篇 2022年5月31日 下午12:00
下一篇 2022年5月31日 下午12:00


相关推荐

  • OpenClaw windows卸载

    OpenClaw windows卸载

    2026年3月15日
    4
  • “虹小囡”探秘世界人工智能大会,近距离触摸AI科技的温度

    “虹小囡”探秘世界人工智能大会,近距离触摸AI科技的温度

    2026年3月12日
    2
  • app常见性能测试点

    app常见性能测试点普遍的 apk 性能测试 主要是以下七类 1 响应 2 内存 3 cpu4 FPS app 使用的流畅度 5 GPU 过度渲染 6 耗电 7 耗流 app 除了这些性能测试 还有 手机版本号兼容性 屏幕分辨率兼容性 稳定性测试 安全测试等 后续会持续更新 流量测试同这些一起更新 这里就不在说明了 一 响应软件的响应时间和响应速度直接影响到用户的体验度 如果一个软件 迟迟加载不出来 会直

    2026年3月19日
    3
  • 月之暗面 Kimi K2 Thinking 发布:300 轮工具调用,AI Agent 迈向新高度

    月之暗面 Kimi K2 Thinking 发布:300 轮工具调用,AI Agent 迈向新高度

    2026年3月12日
    2
  • 最短路径-Floyd算法的matlab实现.md「建议收藏」

    最短路径-Floyd算法的matlab实现.md「建议收藏」最短路径-Floyd算法的matlab实现​ 弗洛伊德算法是解决任意两点间的最短路径的一种算法,可以正确处理有向图或有向图或负权(但不可存在负权回路)的最短路径问题。​ 在Floyd算法中一般有两个矩阵,一个距离矩阵D,一个路由矩阵R,其中距离矩阵用于存储任意两点之间的最短距离,而路由矩阵则记录任意两点之间的最短路径信息。其思想是:如果可以从一个点进行中转,就进行比较从这个点中转和不中转的距…

    2022年6月22日
    146
  • sql server 数据库分区分表

    sql server 数据库分区分表sqlserver数据库分区分表作为演示,本文使用的数据库sqlserver2017管理工具sqlservermanagementstudio18,,创建数据库mytest,添加Test表,Test表列为id和name,具体可以自行创建sqlserver数据库分区分表具体步骤如下1、选择数据库选择右键新建查询,内容如下–数据库分区分表–1、给数据库mytest添加文件分组ALTERDATABASEmytestaddfilegroupgroup

    2022年5月5日
    166

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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