我查看了man 2 sync
它显示sync
和syncfs
void sync(void);
void syncfs(int fd);
syncfs
很容易理解。给出了一个fd,该fd的数据完全写入底层文件系统。
sync
有什么用?
sync() causes all buffered modifications to file metadata and data to be written to the underlying file systems.
是否系统中的所有缓冲区都写入了fs?还是这个进程打开的所有文件都写入fs?我不太了解"buffered modifications to file metadata"
答案 0 :(得分:2)
每当您发出write
,send
时,写入文件支持的映射或类似的东西,内核不会被迫将数据直接刷新到持久存储,底层网络堆栈等。这种缓冲是出于性能原因而完成的。
sync
指示内核完成此操作。清空所有缓冲区。