求关于sync, fsync, fdatasync的区别

yinzhifeng6666 2012-01-10 07:52:40
求各位兄弟讲解下sync,fsync,fdatasync函数的区别
不用把unix环境高级编程上的话copy过来
...全文
239 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yinzhifeng6666 2012-01-11
  • 打赏
  • 举报
回复
[Quote=引用楼主 yinzhifeng6666 的回复:]
求各位兄弟讲解下sync,fsync,fdatasync函数的区别
不用把unix环境高级编程上的话copy过来
[/Quote]

想明白了
调用系统函数write时 有写延迟,write负责把东西写到缓存区上sync负责把缓存区上的东西排到写队列中,在由守护进程负责把队列里的东西写到磁盘上,而sync函数在把缓存区上的东西排到写队列后不管写队列中的内容是否写到磁盘上都立即返回。
fsync函数则是对指定文件的操作,而且必须等到写队列中的内容都写到磁盘后才返回,并且更新文件inode结点里的内容。
fdatasync和fsync类似,但是这个函数只更新data块里的内容。
yinzhifeng6666 2012-01-10
  • 打赏
  • 举报
回复
还是没能理解
Oasis 2012-01-10
  • 打赏
  • 举报
回复
sync是只管写,fsync是管的写进去没有还能让你马上看见,fdatasync是确保写进去了但不一定能看见
我是这么理解的
yinzhifeng6666 2012-01-10
  • 打赏
  • 举报
回复
我就是在看unix高级编程 读到这三个函数 对这三个函数的区别不是很理解
qq120848369 2012-01-10
  • 打赏
  • 举报
回复
sync好像是最稳妥的。
jackyjkchen 2012-01-10
  • 打赏
  • 举报
回复
直接去看unix高级编程更快,真的……

18,787

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 专题技术讨论区
社区管理员
  • 专题技术讨论区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧