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

Dan*_*ien 10 c file-descriptor large-file-support large-files posix-api

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

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

R..*_*R.. 13

O_LARGEFILE永远不应该被应用程序直接使用.它在内部由openlibc 的64位偏移兼容版本使用,当它向内核发出系统调用时(Linux,或者可能是另一个内核,这个64位偏移模式是一个二类) -citizen废话).只要确保始终包含-D_FILE_OFFSET_BITS=64在您的内容中CFLAGS,您就不必担心任何事情.

  • 您是否有任何不应使用 O_LARGEFILE 的来源? (2认同)

cod*_*nix 11

IIRC,如果你这样做

#define _LARGEFILE_SOURCE
#define _FILE_OFFSET_BITS 64
Run Code Online (Sandbox Code Playgroud)

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

另外看

  • 不需要`_LARGEFILE_SOURCE`,只需`_FILE_OFFSET_BITS`. (6认同)