如何同步文件移动到存储?

时间:2014-09-24 10:07:44

标签: c linux file-io storage

我在Linux环境中使用C / C ++系统,我使用stdio.h中提供的rename()函数移动文件。

移动后,我需要将其同步到底层存储的功能,以使更改成为永久性的。如果我有文件描述符,我可以使用fsync()或fdatasync()。

有一种优雅的方式吗?或者我必须做这样的事情:

rename(old_path, new_path);
int fd = open(new_path, O_APPEND | O_WRONLY);
fdatasync(fd);
close(fd);

这甚至会起作用吗?

1 个答案:

答案 0 :(得分:1)

可能您正在寻找void sync(void);功能。

sync函数只是将所有修改的块缓冲区排队以进行写入和返回,它不会等待磁盘写入发生。

函数sync通常定期从(通常每30秒)调用一次 系统守护程序,通常称为更新。

保证定期清理内核的块缓冲区。