当前位置:嗨网首页>书籍在线阅读

23-sync()

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

2.4.2 sync()

sync()系统调用用来对磁盘上的所有缓冲区进行同步,虽然它效率不高,但还是被广泛应用:

41.jpg 该函数没有参数,也没有返回值。它总是成功返回,并确保所有的缓冲区——包括数据和元数据——都能够写入磁盘[4]

POSIX标准并不要求sync()一直等待所有缓冲区都写到磁盘后才返回,只需要调用它来启动把所有缓冲区写到磁盘上即可。因此,一般建议多次调用sync(),确保所有数据都安全地写入磁盘。但是对于Linux而言,sync()一定是等到所有缓冲区都写入了才返回,因此调用一次sync()就够了。

sync()的真正用途在于同步功能的实现。应用应该使用fsync()和fdatasync()将文件描述符指定的数据同步到磁盘中。注意,当系统繁忙时,sync()操作可能需要几分钟甚至更长的时间才能完成。