flockfile(3)

الاسم
flockfile, ftrylockfile, funlockfile - قفل FILE من أجل stdio

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

موجز
#include <stdio.h>

void flockfile(FILE *filehandle);
int ftrylockfile(FILE *filehandle);
void funlockfile(FILE *filehandle);

    متطلبات ماكروات اختبار الميزات لـ glibc (انظر feature_test_macros(7)):

كافة الدوال الموضحة أعلاه:
    /* Since glibc 2.24: */ _POSIX_C_SOURCE >= 199309L
        || /* glibc <= 2.23: */ _POSIX_C_SOURCE
        || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE

الوصف
دوال stdio آمنة للخيوط. يُحقق هذا بتعيين لكل كائن FILE عدد أقفال و (إذا كان عدد الأقفال غير صفري) خيط مالك. لكل استدعاء مكتبة، تنتظر هذه الدوال حتى لا يكون كائن FILE مقفلاً بواسطة خيط مختلف، ثم تقفله، وتُجري الإدخال/الإخراج المطلوب، وتُقفل الكائن مرة أخرى.

(ملاحظة: لا علاقة لهذا القفل بقفل الملفات الذي تقوم بهوظائف مثل flock(2) و lockf(3).)

كل هذا غير مرئي لمبرمج C، لكن قد يكون هناك سببان للرغبة في تحكم أكثر تفصيلاً. من ناحية، ربما تنتمي سلسلة من عمليات الإدخال/الإخراج بواسطة خيط واحد معًا، ولا ينبغي مقاطعتها بواسطة إدخال/إخراج خيط آخر. من ناحية أخرى، ربما ينبغي تجنب الحمل الزائد للقفل لتحقيق كفاءة أكبر.

لتحقيق هذا، يمكن لخيط أن يقفل كائن FILE صراحة، ثم يُجري سلسلة عمليات الإدخال/الإخراج الخاصة به، ثم يُقفله. يمنع هذا الخيوط الأخرى من التدخل. إذا كان سبب فعل هذا هو تحقيق كفاءة أكبر، يُجري المرء الإدخال/الإخراج باستخدام الإصدارات غير المقفلة من دوال stdio: باستخدام getc_unlocked(3) و putc_unlocked(3) بدلاً من getc(3) و putc(3).

تنتظر دالة flockfile() حتى لا يكون *filehandle مقفلاً بواسطة خيط مختلف، ثم تجعل الخيط الحالي مالكًا لـ *filehandle، وتزيد عدد الأقفال.

تقلل دالة funlockfile() عدد الأقفال.

دالة ftrylockfile() هي إصدار غير محظور من flockfile(). لا تفعل شيئًا في حالة امتلاك خيط آخر لـ *filehandle، وتكتسب الملكية وتزيد عدد الأقفال بخلاف ذلك.

قيمة الإرجاع
تُرجع دالة ftrylockfile() صفرًا للنجاح (تم الحصول على القفل)، وقيمة غير صفرية للفشل.

الأخطاء
لا شيء.

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

المعايير
POSIX.1-2008.

التاريخ
POSIX.1-2001.

تتوفر هذه الدوال عندما يُعرف _POSIX_THREAD_SAFE_FUNCTIONS.

انظر أيضًا
unlocked_stdio(3)

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

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

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