- unstable 4.31.0-1
| lockf(3) | Library Functions Manual | lockf(3) |
الاسم¶
lockf - تطبيق أو اختبار أو إزالة قفل POSIX على ملف مفتوح
المكتبة¶
مكتبة سي المعيارية (libc، -lc)
موجز¶
#include <unistd.h>
int lockf(int fd, int op, off_t size);
lockf():
_XOPEN_SOURCE >= 500
|| /* glibc >= 2.19: */ _DEFAULT_SOURCE
|| /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
الوصف¶
يُطبَّق أو يُختبر أو يُزال قفل POSIX على مقطع من ملف مفتوح. يُحدَّد الملف بواسطة fd، وهو واصف ملف مفتوح للكتابة، والإجراء بواسطة op، ويتكون المقطع من مواضع البايت pos..pos+size-1 إذا كان size موجبًا، و pos-size..pos-1 إذا كان size سالبًا، حيث pos هو موضع الملف الحالي، وإذا كان size صفرًا، يمتد المقطع من موضع الملف الحالي إلى اللانهاية، ليشمل مواضع نهاية الملف الحالية والمستقبلية. في جميع الحالات، قد يمتد المقطع إلى ما بعد نهاية الملف الحالية.
على لينكس، lockf() هي مجرد واجهة فوق قفل fcntl(2). تنفذ العديد من الأنظمة الأخرى lockf() بهذه الطريقة، لكن لاحظ أن POSIX.1 يترك العلاقة بين أقفال lockf() و fcntl(2) غير محددة. يجب على التطبيق المحمول تجنب خلط استدعاءات هذه الواجهات.
العمليات الصالحة مُعطاة أدناه:
- F_LOCK
- يُعيَّن قفل حصري على المقطع المحدد من الملف. إذا كان (جزء من) هذا المقطع مقفلاً بالفعل، يُحجَز الاستدعاء حتى يُحرَّر القفل السابق. إذا تداخل هذا المقطع مع مقطع مقفل سابقًا، يُدمَج كلاهما. تُحرَّر أقفال الملف بمجرد إغلاق العملية التي تحمل الأقفال لأي واصف ملف للملف. لا ترث العملية الفرعية هذه الأقفال.
- F_TLOCK
- نفس F_LOCK لكن الاستدعاء لا يُحجَز أبدًا ويعيد خطأ بدلاً من ذلك إذا كان الملف مقفلاً بالفعل.
- F_ULOCK
- يُفتَح قفل المقطع المشار إليه من الملف. قد يتسبب هذا في تقسيم مقطع مقفل إلى مقطعين مقفلين.
- F_TEST
- يُختبر القفل: يُعيد 0 إذا كان المقطع المحدد غير مقفل أو مقفلاً بواسطة هذه العملية؛ يُعيد -1، ويُعيِّن errno إلى EAGAIN (EACCES على بعض الأنظمة الأخرى)، إذا كانت عملية أخرى تحمل قفلاً.
قيمة الإرجاع¶
عند النجاح، يُعاد الصفر. وعند حدوث خطأ، يُعاد الرقم -1، ويُضبط errno للإشارة إلى الخطأ.
الأخطاء¶
- EACCES أو EAGAIN
- الملف مقفل ووُصِف F_TLOCK أو F_TEST، أو العملية محظورة لأن الملف قد خُوطِط في الذاكرة بواسطة عملية أخرى.
- EBADF
- fd ليس واصف ملف مفتوح؛ أو op هو F_LOCK أو F_TLOCK و fd ليس واصف ملف قابلًا للكتابة.
- EDEADLK
- كان op هو F_LOCK وستتسبب عملية القفل هذه في طريق مسدود.
- EINTR
- أثناء انتظار الحصول على القفل، قُطع النداء بسبب وصول إشارة التقطها معالج؛ انظر signal(7).
- EINVAL
- وُصِفت عملية غير صالحة في op.
- ENOLCK
- عدد كبير جدًا من أقفال المقطع مفتوحة، جدول القفل ممتلئ.
السمات¶
للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر attributes(7).
| الواجهة | السمة | القيمة |
| lockf() | سلامة الخيوط | MT-Safe |
المعايير¶
POSIX.1-2008.
التاريخ¶
POSIX.1-2001، SVr4.
انظر أيضًا¶
locks.txt و mandatory-locking.txt في دليل مصدر نواة لينكس Documentation/filesystems (في النوى القديمة، توجد هذه الملفات مباشرة تحت دليل Documentation، ويُسمى mandatory-locking.txt بـ mandatory.txt)
ترجمة¶
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>
هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.
إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.
| 8 فبراير 2026 | صفحات دليل لينكس 6.18 |