O_LARGEFILE只需要写一个大文件吗?

如果我想要做的就是写一个大文件( O_WRONLY )或附加到一个大文件( O_APPEND | O_WRONLY ),是否需要O_LARGEFILE标志?

从我在CLucene-dev邮件列表上读到的标题为“ 无法写入> 2gb 索引文件 ”的post中,可能需要O_LARGEFILE来编写大文件,但该讨论中的参与者使用的是O_RDWR ,而不是O_WRONLY ,所以我是不确定。

O_LARGEFILE绝不应该由应用程序直接使用。 它在内部由libc中的64位偏移兼容版本的open ,当它对内核进行系统调用时(Linux,或者可能是另一个内核,这种64位偏移模式是-a-second-阶级 – 公民废话)。 只需确保在CFLAGS始终包含-D_FILE_OFFSET_BITS=64 ,您就不必担心任何事情。

IIRC,如果你这样做

 #define _LARGEFILE_SOURCE #define _FILE_OFFSET_BITS 64 

在所有其他包括之前,您不需要传递此标志。

另外看