Se O_LARGEFILE necesario sólo para escribir un archivo de gran tamaño?
-
04-10-2019 - |
Pregunta
¿Es la bandera O_LARGEFILE
necesaria si todo lo que quiero hacer es escribir un archivo grande (O_WRONLY
) o añadir a un archivo de gran tamaño (O_APPEND | O_WRONLY
)?
A partir de un hilo que he leído titulado " No se puede escritura> 2gb archivo de índice " en la lista de correo CLucene-dev, parece que podría ser necesaria O_LARGEFILE
para escribir archivos de gran tamaño, pero los participantes en la discusión que están utilizando O_RDWR
, no O_WRONLY
, así que no estoy seguro.
Solución
O_LARGEFILE
nunca debe ser utilizada directamente por las aplicaciones. Es para ser utilizado internamente por versión compatible con offset de 64 bits el de open
en libc cuando se hace la llamada al sistema al kernel (Linux, o posiblemente otro kernel con este 64 bits en modo de desplazamiento-es-un-segundo sin sentido clase ciudadano). Sólo asegúrese de incluir siempre en su -D_FILE_OFFSET_BITS=64
CFLAGS
y usted nunca tendrá que preocuparse de nada.
Otros consejos
IIRC si lo hace
#define _LARGEFILE_SOURCE
#define _FILE_OFFSET_BITS 64
antes de que el resto incluye no necesita pasar esta bandera.