据我了解,如果我想将数据同步到存储设备,我可以使用 fsync() 来刷新所有操作系统输出缓存......但显然它根本不能保证这一点,不像文档试图欺骗你,并且数据可能不会写入磁盘!
这对许多用途来说都不是很好,因为它可能导致数据损坏。如何使用 POSIX 库(如果可能,以可移植的方式)来保证数据已被写入(尽可能)并防止数据损坏?
有 fdatasync() 但它没有在 OSX 上实现,那么有没有更好、更便携的方法,还是必须在不同的系统上实现不同的代码?我也不确定 fdatasync() 是否足够好。
当然,在最坏的情况下,我可能会忘记这一点并使用使用 ACID 来存储数据的冗余数据库库。我不想要那个。
此外,我对如何确保截断和重命名操作确实完成感兴趣。
谢谢!