我在 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);
那还能行吗?
最佳答案
可能您正在寻找 void sync(void);
函数。
sync
函数只是将所有修改的 block 缓冲区排队等待写入并返回,它不会等待磁盘写入发生。
sync
函数通常被定期调用(通常每 30 秒一次)
系统守护进程,通常称为更新。
这保证定期刷新内核的 block 缓冲区。
关于c - 如何同步文件移动到存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26014185/