fdatasync -- 1




传统UNIX实现的内核中设有缓冲区高速缓存或页面高速缓存,大多数磁盘IO通过缓冲进行,即当写入文件时,内核通常先将该数据复制到一个缓冲区中,只有当缓冲区写满时才进行实际的IO操作,之中输出方式被称为“延迟写”延迟写减少了磁盘的读写次数,但降低了文件内容的更新速度,使得欲写到文件中的数据在一段时间内并未写到磁盘上,甚至当系统发生故障时,这种延迟写可能造成文件更新内容的丢失。为了保证磁盘上实际文件系统与高速缓存中内容的一致性,UNIX提供了sync,fsync和fdatasync三个函数int fsync (int fd); int fdatasync (int fd); int sync (void); 若成功调用则返回0,否则返回-1 sync函数只是将所有修改过的块缓冲区排入写队列,然后就返回,它并不等待实际写磁盘结束fsync只对单一文件起作用(fd指定),并且会等待磁盘写入结束后返回。可以切实保证修改过的块立即写到磁盘上fdatasync函数类似于fsync,但他只影响文件的数据,而不会像fsync一样同步更新文件属性 通常,称为update的系统守护进程会周期性的(一般是30秒)调用sync函数,以保证定期冲洗内核的块缓冲区 注:freeBSD 和 mac os x 不支持fdatasync  var CODE_DIVS=[{"id
#读书笔记    #技术帖    #linux    #unix   



京ICP备15018585号