我正在使用stdio.h中提供的rename()函數移動文件的Linux環境中使用C/C++系統。如何將文件同步到存儲?
移動後,我需要功能將其同步到底層存儲以使更改永久。如果我有一個文件描述符,我可以使用fsync()或fdatasync()。
有沒有一個這樣做的優雅方式?或者我必須做這樣的事情:
rename(old_path, new_path);
int fd = open(new_path, O_APPEND | O_WRONLY);
fdatasync(fd);
close(fd);
即使工作?
是的,它可以工作,儘管rename()不會對文件中的數據做任何事情,只會處理元數據。爲了保持元數據的一致性,你還需要fsync()rename()影響的目錄。 http://stackoverflow.com/questions/3764822/how-to-durably-rename-a-file-in-posix – nos 2014-09-24 10:54:05