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

标签 c large-files file-descriptor posix-api large-file-support

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

从我在 CLucene-dev 邮件列表上读到的标题为“Cannot write >2gb index file”的帖子中,似乎 O_LARGEFILE 可能需要写入大文件,但该讨论的参与者正在使用 O_RDWR,不是O_WRONLY,所以我不确定。

最佳答案

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

关于c - 只需要写一个大文件就需要 O_LARGEFILE 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2888425/

相关文章:

c++ - 在 Qt 中处理非常大的图像

sockets - BSD 套接字的文件描述符错误

复制结构体的成员

c - 如何更改线程函数内的 void* 参数

更改 C 函数中的全局结构

linux - 运行使用 stdin 的 cron 作业

linux - 增加 Linux 中文件描述符的数量

c - 如何从 C 中的枚举中获取相对字符串值?

large-files - 为文件调用两次 mmap

upload - 在 asp.net core 6 中上传大文件时出错(HTTP 错误 413.1 - 请求实体太大)