sync()如何工作?

时间:2014-06-25 08:51:29

标签: c linux filesystems

我查看了man 2 sync

它显示syncsyncfs

   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"

1 个答案:

答案 0 :(得分:2)

每当您发出writesend时,写入文件支持的映射或类似的东西,内核不会被迫将数据直接刷新到持久存储,底层网络堆栈等。这种缓冲是出于性能原因而完成的。

sync指示内核完成此操作。清空所有缓冲区。