为了 保证磁盘上实际文件系统与缓存中内容的一致性(在系统中,设有缓冲存储器,将数据写到文件上的时候,需要通过缓冲器加入队列,缓冲器满以后再进行数据的写入,这样就会导致数据不同步,存在一定的误差),可以通过sync和fsync函数来实现:
#include<unistd.h>
void sync(void);
int fsync(int fd);
sync将所有修改过的块的缓存排入写队列,然后返回,并不等待实际I/O操作结束(update一般30s调用一次sync函数)
fsync只引用单个文件(由fd指定),等待I/O结束,然后返回(可用于数据库中,可以确保修改过的块立即写到磁盘中)