.\" -*- coding: UTF-8 -*- .\" Copyright 1993, Rickard E. Faith .\" Copyright 2002, Michael Kerrisk .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\" FIXME Maybe document LOCK_MAND, LOCK_RW, LOCK_READ, LOCK_WRITE .\" which only have effect for SAMBA. .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH flock 2 "8 فبراير 2026" "صفحات دليل لينكس 6.18" .SH الاسم flock \- تطبيق أو إزالة قفل استشاري على ملف مفتوح .SH المكتبة مكتبة سي المعيارية (\fIlibc\fP،\ \fI\-lc\fP) .SH موجز .nf \fB#include \fP .P \fBint flock(int \fP\fIfd\fP\fB, int \fP\fIop\fP\fB);\fP .fi .SH الوصف تطبيق أو إزالة قفل استشاري على الملف المفتوح المحدد بواسطة \fIfd\fP. الوسيط \fIop\fP هو أحد التالي: .RS 4 .TP 9 \fBLOCK_SH\fP وضع قفل مشترك. يمكن لأكثر من عملية الاحتفاظ بقفل مشترك لملف معين في وقت معين. .TP \fBLOCK_EX\fP وضع قفل حصري. يمكن لعملية واحدة فقط الاحتفاظ بقفل حصري لملف معين في وقت معين. .TP \fBLOCK_UN\fP إزالة قفل موجود تحتفظ به هذه العملية. .RE .P قد يحجب استدعاء \fBflock\fP() إذا كان قفل غير متوافق محتجز من قبل عملية أخرى. لتقديم طلب غير محجب، قم بتضمين \fBLOCK_NB\fP (عن طريق OR) مع أي من العمليات أعلاه. .P لا يمكن لملف واحد أن يحتوي في نفس الوقت على أقفال مشتركة وحصرية معًا. .P ترتبط الأقفال التي أنشأها \fBflock\fP() بوصف ملف مفتوح (انظر \fBopen\fP(2)). يعني هذا أن واصفات الملفات المكررة (المنشأة، على سبيل المثال، بواسطة \fBfork\fP(2) أو \fBdup\fP(2)) تشير إلى نفس القفل، ويمكن تعديل هذا القفل أو تحريره باستخدام أي من واصفات الملفات هذه. علاوة على ذلك، يتم تحرير القفل إما عن طريق عملية \fBLOCK_UN\fP صريحة على أي من واصفات الملفات المكررة هذه، أو عند إغلاق جميع واصفات الملفات هذه. .P إذا استخدمت عملية \fBopen\fP(2) (أو ما شابه) للحصول على أكثر من واصف ملف لنفس الملف، يتم معالجة واصفات الملفات هذه بشكل مستقل بواسطة \fBflock\fP(). قد يتم رفض محاولة قفل الملف باستخدام أحد واصفات الملفات هذه بواسطة قفل وضعته العملية المستدعية بالفعل عبر واصف ملف آخر. .P يمكن للعملية الاحتفاظ بنوع واحد فقط من القفل (مشترك أو حصري) على ملف. ستقوم استدعاءات \fBflock\fP() اللاحقة على ملف مقفل بالفعل بتحويل القفل الموجود إلى وضع القفل الجديد. .P يتم الحفاظ على الأقفال التي أنشأها \fBflock\fP() عبر \fBexecve\fP(2). .P يمكن وضع قفل مشترك أو حصري على ملف بغض النظر عن الوضع الذي تم فتح الملف به. .SH "قيمة الإرجاع" عند النجاح، يُعاد الصفر. وعند حدوث خطأ، يُعاد الرقم \-1، ويُضبط \fIerrno\fP للإشارة إلى الخطأ. .SH الأخطاء .TP \fBEBADF\fP \fIfd\fP ليس واصف ملف مفتوح. .TP \fBEINTR\fP أثناء انتظار الحصول على القفل، قُطع النداء بسبب وصول إشارة التقطها معالج؛ انظر \fBsignal\fP(7). .TP \fBEINVAL\fP \fIop\fP غير صالح. .TP \fBENOLCK\fP نفدت ذاكرة النواة لتخصيص سجلات القفل. .TP \fBEWOULDBLOCK\fP الملف مقفل وتم تحديد العلم \fBLOCK_NB\fP. .SH الإصدارات .\" E.g., according to the flock(2) man page, FreeBSD since at least 5.3 منذ Linux 2.0، تم تنفيذ \fBflock\fP() كاستدعاء نظام بحد ذاته بدلاً من محاكاته في مكتبة GNU C كاستدعاء لـ \fBfcntl\fP(2). مع هذا التنفيذ، لا يوجد تفاعل بين أنواع القفل التي يضعها \fBflock\fP() و \fBfcntl\fP(2)، ولا يكتشف \fBflock\fP() حالة الجمود. (لاحظ، مع ذلك، أنه على بعض الأنظمة، مثل BSDs الحديثة، \fIتتفاعل\fP أقفال \fBflock\fP() و \fBfcntl\fP(2) مع بعضها البعض.) .SS "تفاصيل CIFS" حتى Linux 5.4، لا يتم نشر \fBflock\fP() عبر SMB. لن يظهر ملف بهذه الأقفال كمقفل للعملاء البعيدين. .P منذ Linux 5.5، يتم محاكاة أقفال \fBflock\fP() بأقفال نطاق بايت SMB على الملف بأكمله. على غرار NFS، يعني هذا أن أقفال \fBfcntl\fP(2) و \fBflock\fP() تتفاعل مع بعضها البعض. تأثير جانبي مهم آخر هو أن الأقفال لم تعد استشارية: أي إدخال/إخراج على ملف مقفل سيفشل دائمًا مع \fBEACCES\fP عند القيام به من واصف ملف منفصل. ينشأ هذا الاختلاف من تصميم الأقفال في بروتوكول SMB، الذي يوفر دلالات قفل إلزامية. .P قد تختلف دلالات القفل عن بعد والإلزامي مع بروتوكول SMB وخيارات الوصل ونوع الخادم. انظر \fBmount.cifs\fP(8) للحصول على معلومات إضافية. .SH المعايير BSD. .SH التاريخ 4.4BSD (ظهر استدعاء \fBflock\fP() لأول مرة في 4.2BSD). تظهر نسخة من \fBflock\fP()، ربما تم تنفيذها بدلالة \fBfcntl\fP(2)، على معظم أنظمة UNIX. .SS "تفاصيل NFS" حتى Linux 2.6.11، لا يقوم \fBflock\fP() بقفل الملفات عبر NFS (أي أن نطاق الأقفال كان محدودًا بالنظام المحلي). بدلاً من ذلك، يمكن استخدام قفل نطاق البايت \fBfcntl\fP(2)، الذي يعمل عبر NFS، بشرط وجود إصدار حديث بما فيه الكفاية من Linux وخادم يدعم القفل. .P منذ Linux 2.6.12، تدعم عملاء NFS أقفال \fBflock\fP() عن طريق محاكاتها كأقفال نطاق بايت \fBfcntl\fP(2) على الملف بأكمله. يعني هذا أن أقفال \fBfcntl\fP(2) و \fBflock\fP() \fIتتفاعل\fP مع بعضها البعض عبر NFS. يعني أيضًا أنه لوضع قفل حصري، يجب فتح الملف للكتابة. .P .\" commit 5eebde23223aeb0ad2d9e3be6590ff8bbfab0fc2 منذ Linux 2.6.37، تدعم النواة وضع توافق يسمح بمعالجة أقفال \fBflock\fP() (وكذلك أقفال منطقة البايت \fBfcntl\fP(2)) كمحلية؛ انظر مناقشة خيار \fIlocal_lock\fP في \fBnfs\fP(5). .SH ملاحظات يضع \fBflock\fP() أقفال استشارية فقط؛ مع وجود أذونات مناسبة على ملف، تكون العملية حرة في تجاهل استخدام \fBflock\fP() وتنفيذ الإدخال/الإخراج على الملف. .P أقفال \fBflock\fP() و \fBfcntl\fP(2) لها دلالات مختلفة فيما يتعلق بالعمليات المتفرعة و \fBdup\fP(2). على الأنظمة التي تنفذ \fBflock\fP() باستخدام \fBfcntl\fP(2)، ستكون دلالات \fBflock\fP() مختلفة عن تلك الموصوفة في صفحة الدليل هذه. .P .\" Kernel 2.5.21 changed things a little: during lock conversion .\" it is now the highest priority process that will get the lock -- mtk تحويل القفل (من مشترك إلى حصري، أو العكس) ليس مضمونًا أن يكون ذريًا: يُزال القفل الموجود أولاً، ثم يُنشأ قفل جديد. بين هاتين الخطوتين، قد يُمنح طلب قفل معلق من عملية أخرى، مما يؤدي إلى أن التحويل إما أن يُحجب أو يفشل إذا تم تحديد \fBLOCK_NB\fP. (هذا هو سلوك BSD الأصلي، ويحدث في العديد من التطبيقات الأخرى.) .P تحرير القفل عند إغلاق واصف ملف ليس متسلسلاً بعد جميع التأثيرات الملحوظة لـ \fBclose\fP(2). على سبيل المثال، إذا كتبت عملية ملفًا أثناء حملها لقفل حصري، ثم أغلقت ذلك الملف، وحجبت عملية أخرى وضع قفل مشترك على ذلك الملف لانتظار إغلاقه، فقد تلاحظ أن \fBexecve\fP(2) لاحقًا لذلك الملف يفشل مع \fBETXTBSY\fP، وأن \fBumount\fP(2) لنظام الملفات الأساسي الخاص به يفشل مع \fBEBUSY\fP، كما لو كان الملف لا يزال مفتوحًا في العملية الأولى. .SH "انظر أيضًا" \fBflock\fP(1)، \fBclose\fP(2)، \fBdup\fP(2)، \fBexecve\fP(2)، \fBfcntl\fP(2)، \fBfork\fP(2)، \fBopen\fP(2)، \fBlockf\fP(3)، \fBlslocks\fP(8) .P \fIDocumentation/filesystems/locks.rst\fP في شجرة مصدر نواة لينكس .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .