lseek64(3)

الاسم
lseek64 - إعادة وضع إزاحة ملف القراءة/الكتابة 64-بت

المكتبة
مكتبة سي المعيارية (libc، -lc)

موجز
#define _LARGEFILE64_SOURCE     /* انظر feature_test_macros(7) */
#include <sys/types.h>
#include <unistd.h>

off64_t lseek64(int fd, off64_t offset, int whence);

الوصف
عائلة دوال lseek() تعيد وضع إزاحة الملف المفتوح المرتبط بوصف الملف fd إلى offset بايت نسبة إلى البداية، الموضع الحالي، أو نهاية الملف، عندما تكون قيمة whence هي SEEK_SET أو SEEK_CUR أو SEEK_END، على التوالي.

لمزيد من التفاصيل، القيمة المُرجعة، والأخطاء، انظر lseek(2).

أربع واجهات متاحة: lseek() و lseek64() و llseek() و _llseek().

  lseek()
النموذج الأولي:

    off_t lseek(int fd, off_t offset, int whence);

دالة الغلاف lseek() لمكتبة C تستخدم النوع off_t. هذا نوع مُوقّع 32-بت على معماريات 32-بت، إلا إذا تم الترجمة باستخدام

    #define _FILE_OFFSET_BITS 64

وفي هذه الحالة يصبح نوعًا مُوقّعًا 64-بت.

  lseek64()
النموذج الأولي:

    off64_t lseek64(int fd, off64_t offset, int whence);

دالة المكتبة lseek64() تستخدم نوعًا 64-بت حتى عندما يكون off_t نوعًا 32-بت. نموذجها الأولي (والنوع off64_t) متاح فقط عند الترجمة باستخدام

    #define _LARGEFILE64_SOURCE

الدالة lseek64() متاحة منذ glibc 2.1.

  llseek()
النموذج الأولي:

    loff_t llseek(int fd, loff_t offset, int whence);

النوع loff_t هو نوع مُوقّع 64-بت. دالة المكتبة llseek() متاحة في glibc وتعمل بدون تعريفات خاصة. ومع ذلك، لا توفر رؤوس glibc نموذجًا أوليًا. يجب على المستخدمين إضافة النموذج الأولي أعلاه، أو ما يعادله، إلى مصدرهم الخاص. عندما اشتكى المستخدمون من فقدان البيانات بسبب ترجمة خاطئة لـ e2fsck(8)، أضافت glibc 2.1.3 تحذيرًا في وقت الربط

"قد تكون دالة `llseek` خطيرة؛ استخدم `lseek64` بدلاً من ذلك."

هذا يجعل هذه الدالة غير قابلة للاستخدام إذا أراد المرء ترجمة خالية من التحذيرات.

منذ glibc 2.28، لم يعد رمز هذه الدالة متاحًا للتطبيقات المرتبطة حديثًا.

  _llseek()
على معماريات 32-بت، هذه هي استدعاءات النظام المستخدمة (بواسطة دوال الغلاف لمكتبة C) لتنفيذ جميع الدوال المذكورة أعلاه. النموذج الأولي هو:

    int _llseek(int fd, off_t offset_hi, off_t offset_lo,
                loff_t *result, int whence);

لمزيد من التفاصيل، انظر llseek(2).

لا تحتاج أنظمة 64-بت إلى استدعاء نظام _llseek(). بدلاً من ذلك، لديها استدعاء نظام lseek(2) يدعم إزاحات ملفات 64-بت.

السمات
للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر attributes(7).
الواجهة | السمة | القيمة
lseek64() | سلامة الخيوط | MT-Safe

ملاحظات
lseek64() هي إحدى الدوال المحددة في مواصفات قمة الملفات الكبيرة (LFS) التي أُكملت في عام 1996. كان الغرض من المواصفة توفير دعم انتقالي يسمح للتطبيقات على أنظمة 32-بت بالوصول إلى ملفات يتجاوز حجمها ما يمكن تمثيله بنوع off_t ذي 32-بت. كما ذُكر أعلاه، يُكشف هذا الرمز بواسطة ملفات الرأس إذا تم تعريف ماكرو اختبار الميزة _LARGEFILE64_SOURCE. بدلاً من ذلك، على نظام 32-بت، يُلقب الرمز lseek إلى lseek64 إذا تم تعريف الماكرو _FILE_OFFSET_BITS بالقيمة 64.

انظر أيضًا
llseek(2), lseek(2)

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.