我正在编写一个可以在Linux和FreeBSD上运行的程序,并且我希望确保每次
根据OPEN(2)手册,在Linux(高于2.6版本),
因此,在Linux上,无论是
在FreeBSD上,为了保证同步写入,哪种选项具有最佳性能:(1)
write()
返回时,数据实际上已经被写入到物理设备上的文件中,以免因意外情况(如断电、进程意外中断等)导致我的数据丢失。根据OPEN(2)手册,在Linux(高于2.6版本),
O_DIRECT
是同步的,但可能存在性能问题;在FreeBSD上,O_DIRECT
不能保证同步,也可能存在问题。因此,在Linux上,无论是
O_DIRECT
还是O_SYNC
都可以保证同步写入,但哪个具有更好的性能呢?在FreeBSD上,为了保证同步写入,哪种选项具有最佳性能:(1)
O_DIRECT
+fsync()
、(2)O_DIRECT | O_SYNC
或者(3)O_SYNC
单独使用?