Вопрос

Является ли O_LARGEFILE флаг необходим, если все, что я хочу сделать, это записать большой файл (O_WRONLY) или добавить в большой файл (O_APPEND | O_WRONLY)?

Из темы, которую я прочитал под названием "Не удается записать индексный файл объемом >2 ГБ" в списке рассылки CLucene-dev, похоже, что O_LARGEFILE может потребоваться для записи больших файлов, но участники этого обсуждения используют O_RDWR, не O_WRONLY, так что я не уверен.

Это было полезно?

Решение

O_LARGEFILE никогда не должен использоваться непосредственно приложениями.Он должен использоваться внутри 64-разрядной версии, совместимой со смещением open в libc, когда он выполняет системный вызов ядра (Linux или, возможно, другое ядро с этим 64-битным режимом смещения - это бессмыслица гражданина второго сорта).Просто убедитесь, что вы всегда включаете -D_FILE_OFFSET_BITS=64 в вашем CFLAGS и тебе никогда ни о чем не придется беспокоиться.

Другие советы

IIRC, если вы делаете

#define _LARGEFILE_SOURCE
#define _FILE_OFFSET_BITS 64

До всех остальных включает вам не нужно пройти этот флаг.

Дополнительно см

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top