Quelqu'un pourrait-il s'il vous plaît expliquer ce que fait exactement cette option O_LARGEFILE
pour prendre en charge l'ouverture de fichiers volumineux. Et peut-il y avoir des effets secondaires de la compilation avec le drapeau -D_FILE_OFFSET_BITS=64
. En d'autres termes, lorsque compilé avec cette option, devons-nous nous assurer de quelque chose.
Réponses
Trop de publicités?
Ricardo Cárdenes
Points
4636
De man 2 open
:
O_LARGEFILE
(LFS) Autorise l'ouverture de fichiers dont les tailles ne peuvent pas être représentées dans un off_t (mais peuvent être représentées dans un off64_t). La macro _LARGE‐
FILE64_SOURCE doit être définie pour obtenir cette définition. Définir la macro de test de fonction _FILE_OFFSET_BITS à 64 (plutôt
que d'utiliser O_LARGEFILE) est la méthode préférée pour accéder aux fichiers de grande taille sur des systèmes 32 bits (voir les macros de test de fonction(7)).
Edit: (c.-à-d. RTM :P)
Utilisez _FILE_OFFSET_BITS de préférence à O_LARGEFILE. Ils sont utilisés sur les systèmes 32 bits pour permettre l'ouverture de fichiers si grands qu'ils dépassent la plage d'un pointeur de fichier 32 bits.
Non, vous n'avez pas à faire quelque chose de spécial. Si vous êtes sur une version Linux 64 bits, cela ne fait aucune différence de toute façon.