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
在所有其他包括之前,您不需要传递此标志。
另外看