sem_open(3)

الاسم
sem_open - تهيئة وفتح سيمافور مسمى

المكتبة
مكتبة مسالك POSIX (libpthread، -lpthread)

موجز
#include <fcntl.h>           /* لثوابت O_* */
#include <sys/stat.h>        /* لثوابت الوضع */
#include <semaphore.h>

sem_t *sem_open(const char *name, int oflag, ...
                /* mode_t mode, unsigned int value */ );

الوصف
تنشئ sem_open() سيمافور POSIX جديدًا أو تفتح سيمافورًا موجودًا. يُعرَّف السيمافور بواسطة name. لتفاصيل بناء name، انظر sem_overview(7).

يحدد المعامل oflag الأعلام التي تتحكم في عملية الاستدعاء. (يمكن الحصول على تعريفات قيم الأعلام بتضمين <fcntl.h>.) إذا حُدد O_CREAT في oflag، يُنشأ السيمافور إذا لم يكن موجودًا بالفعل. يُضبط مالك السيمافور (معرف المستخدم) على معرف المستخدم الفعّال للعملية المستدعية. تُضبط ملكية المجموعة (معرف المجموعة) على معرف المجموعة الفعّال للعملية المستدعية. إذا حُدد كل من O_CREAT وO_EXCL في oflag، يُرجع خطأ إذا كان سيمافور بالاسم name موجودًا بالفعل.

إذا حُدد O_CREAT في oflag، يجب توفير معاملين إضافيين. يحدد المعامل mode الصلاحيات التي تُوضع على السيمافور الجديد، كما في open(2). (يمكن الحصول على التعريفات الرمزية لبتات الصلاحيات بتضمين <sys/stat.h>.) تُقنَّع إعدادات الصلاحيات مقابل umask العملية. يجب منح صلاحية القراءة والكتابة لكل فئة من المستخدمين التي ستصل إلى السيمافور. يحدد المعامل value القيمة المبدئية للسيمافور الجديد. إذا حُدد O_CREAT وكان سيمافور بالاسم name موجودًا بالفعل، يُتجاهل mode وvalue.

قيمة الإرجاع
عند النجاح، تُرجع sem_open() عنوان السيمافور الجديد؛ يُستخدم هذا العنوان عند استدعاء دوال أخرى متعلقة بالسيمافور. عند الخطأ، تُرجع sem_open() SEM_FAILED، مع ضبط errno للإشارة إلى الخطأ.

الأخطاء

EACCES
    السيمافور موجود، لكن ليس لدى المستدعي صلاحية فتحه.

EEXIST
    حُدد كل من O_CREAT وO_EXCL في oflag، لكن سيمافور بهذا name موجود بالفعل.

EINVAL
    كان value أكبر من SEM_VALUE_MAX.

EINVAL
    يتكون name من "/" فقط، دون أحرف أخرى بعده.

EMFILE
    وُصل إلى الحد الأقصى لواصفات الملفات المفتوحة لكل عملية.

ENAMETOOLONG
    الاسم name كان طويلاً جداً.

ENFILE
    وُصل إلى الحد الأقصى لإجمالي عدد الملفات المفتوحة على مستوى النظام.

ENOENT
    لم يُحدد علم O_CREAT في oflag ولا يوجد سيمافور بهذا name؛ أو حُدد O_CREAT، لكن name لم يكن جيد التكوين.

ENOMEM
    ذاكرة غير كافية.

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

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

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

انظر أيضًا
sem_close(3), sem_getvalue(3), sem_post(3), sem_unlink(3), sem_wait(3), sem_overview(7)

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

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

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