هل O_LargeFile مطلوب فقط لكتابة ملف كبير؟
-
04-10-2019 - |
سؤال
هل O_LARGEFILE
العلم المطلوب إذا كان كل ما أريد القيام به هو كتابة ملف كبير (O_WRONLY
) أو إلحاق ملف كبير (O_APPEND | O_WRONLY
)?
من موضوع قرأته بعنوان "لا يمكن الكتابة> ملف فهرس 2 جيجابايت"في قائمة البريد Clucene-Dev ، يبدو ذلك O_LARGEFILE
قد تكون هناك حاجة لكتابة ملفات كبيرة ، لكن المشاركين في تلك المناقشة يستخدمون O_RDWR
, ، ليس O_WRONLY
, ، لذلك لست متأكدا.
المحلول
O_LARGEFILE
لا ينبغي استخدامها مباشرة عن طريق التطبيقات. يجب استخدامه داخليًا من خلال الإصدار المتوافق مع الاضطراب 64 بت open
في libc عندما يصنع syscall إلى kernel (Linux ، أو ربما kernel أخرى مع هذا الهراء المواطن من فئة الميل 64 بت). فقط تأكد من تضمينه دائمًا -D_FILE_OFFSET_BITS=64
في الخاص بك CFLAGS
ولن تضطر أبدًا للقلق بشأن أي شيء.
نصائح أخرى
IIRC إذا قمت بذلك
#define _LARGEFILE_SOURCE
#define _FILE_OFFSET_BITS 64
قبل كل شيء ، لا تحتاج إلى تمرير هذا العلم.