سؤال

هل 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

قبل كل شيء ، لا تحتاج إلى تمرير هذا العلم.

بالإضافة إلى ذلك انظر

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top