Нужен ли O_LARGEFILE только для записи большого файла? - PullRequest
10 голосов
/ 22 мая 2010

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

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

Ответы [ 2 ]

13 голосов
/ 06 августа 2010

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

11 голосов
/ 22 мая 2010

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

#define _LARGEFILE_SOURCE
#define _FILE_OFFSET_BITS 64

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

дополнительно см.

...