据我所知,唯一的用途sync
是确保没有不完整的信息,这些信息应该安全地写入磁盘,但实际上可能仍然只存在于易失性缓冲区中。然而,sync
实际上根本不能保证这一点- 它仅仅时间表那些要写入的缓冲区,但不等待完成。
那有什么意义呢?如果您确实想确保系统可以安全关闭,那么您肯定会希望它等待关闭完成。 (同样,如果您希望在启动延迟关键的操作之前将所有缓冲区清空。) OTOH,如果您希望程序立即继续并且不想等待缓冲区被刷新,那么为什么要费心sync
呢?当需要其他数据时,缓冲区无论如何都会在某个时刻被刷新。
这种行为似乎导致一些关于需要sync
多次的奇怪童话故事。