.\" -*- coding: UTF-8 -*- '\" t .\" Copyright 2006, Michael Kerrisk .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH mq_open 3 "8 فبراير 2026" "صفحات دليل لينكس 6.18" .SH الاسم mq_open \- فتح طابور رسائل .SH المكتبة مكتبة الوقت الحقيقي (\fIlibrt\fP،\ \fI\-lrt\fP) .SH موجز .nf \fB#include \fP /* من أجل ثوابت O_* */ \fB#include \fP /* من أجل ثوابت الوضع */ \fB#include \fP .P \fBmqd_t mq_open(const char *\fP\fIname\fP\fB, int \fP\fIoflag\fP\fB);\fP \fBmqd_t mq_open(const char *\fP\fIname\fP\fB, int \fP\fIoflag\fP\fB, mode_t \fP\fImode\fP\fB,\fP \fB struct mq_attr *\fP\fIattr\fP\fB);\fP .fi .SH الوصف تنشئ \fBmq_open\fP() طابور رسائل POSIX جديد أو تفتح طابورًا موجودًا. يُحدد الطابور بواسطة \fIname\fP. للتفاصيل حول بناء \fIname\fP، انظر \fBmq_overview\fP(7). .P يحدد المعامل \fIoflag\fP الأعلام التي تتحكم في عملية الاستدعاء. (يمكن الحصول على تعريفات قيم الأعلام بتضمين \fI\fP.) يجب تحديد واحد بالضبط مما يلي في \fIoflag\fP: .TP \fBO_RDONLY\fP فتح الطابور لاستقبال الرسائل فقط. .TP \fBO_WRONLY\fP فتح الطابور لإرسال الرسائل فقط. .TP \fBO_RDWR\fP فتح الطابور لإرسال واستقبال الرسائل معًا. .P يمكن إضافة صفر أو أكثر من الأعلام التالية بعملية \fIOR\fP في \fIoflag\fP: .TP \fBO_CLOEXEC\fP (منذ لينكس 2.6.26) .\" commit 269f21344b23e552c21c9e2d7ca258479dcd7a0a يضبط علم الإغلاق عند التنفيذ لوصف طابور الرسائل. انظر \fBopen\fP(2) لمناقشة فائدة هذا العلم. .TP \fBO_CREAT\fP .\" In reality the filesystem IDs are used on Linux. ينشئ طابور الرسائل إذا لم يكن موجودًا. يُضبط المالك (معرف المستخدم) لطابور الرسائل على معرف المستخدم الفعّال للعملية المستدعية. تُضبط ملكية المجموعة (معرف المجموعة) على معرف المجموعة الفعّال للعملية المستدعية. .TP \fBO_EXCL\fP إذا حُدد \fBO_CREAT\fP في \fIoflag\fP، وكان طابور بالاسم \fIname\fP المحدد موجودًا بالفعل، فسيفشل الاستدعاء مع الخطأ \fBEEXIST\fP. .TP \fBO_NONBLOCK\fP يفتح الطابور في وضع عدم الحظر. في الظروف التي كانت فيها \fBmq_receive\fP(3) و \fBmq_send\fP(3) ستحظر عادةً، تفشل هذه الدوال بدلاً من ذلك مع الخطأ \fBEAGAIN\fP. .P إذا حُدد \fBO_CREAT\fP في \fIoflag\fP، فيجب توفير معاملين إضافيين. يحدد المعامل \fImode\fP الأذونات التي ستوضع على الطابور الجديد، كما في \fBopen\fP(2). (يمكن الحصول على التعريفات الرمزية لبتات الأذونات بتضمين \fI\fP.) تُقنّع إعدادات الأذونات بقناع umask للعملية. .P تحدد حقول \fIstruct mq_attr\fP المشار إليها بواسطة \fIattr\fP العدد الأقصى للرسائل والحجم الأقصى للرسائل الذي سيسمح به الطابور. يُعرف هذا الهيكل كما يلي: .P .in +4n .EX struct mq_attr { long mq_flags; /* الأعلام (تُتجاهل لـ mq_open()) */ long mq_maxmsg; /* العدد الأقصى للرسائل في الطابور */ long mq_msgsize; /* الحجم الأقصى للرسالة (بايت) */ long mq_curmsgs; /* عدد الرسائل الموجودة حاليًا في الطابور (يُتجاهل لـ mq_open()) */ }; .EE .in .P تُستخدم حقول \fImq_maxmsg\fP و \fImq_msgsize\fP فقط عند استدعاء \fBmq_open\fP()؛ تُتجاهل القيم في الحقول المتبقية. .P إذا كان \fIattr\fP NULL، فسيُنشأ الطابور بسمات مبدئية محددة بالتنفيذ. منذ لينكس 3.5، يمكن استخدام ملفين \fI/proc\fP للتحكم في هذه المبدئيات؛ انظر \fBmq_overview\fP(7) للتفاصيل. .SH "قيمة الإرجاع" عند النجاح، تُرجع \fBmq_open\fP() واصف طابور رسائل لاستخدامه من قبل دوال طابور الرسائل الأخرى. عند الخطأ، تُرجع \fBmq_open\fP() \fI(mqd_t)\ \-1\fP، مع ضبط \fIerrno\fP للإشارة إلى الخطأ. .SH الأخطاء .TP \fBEACCES\fP قائمة الانتظار موجودة، لكن المتصل لا يملك صلاحية فتحها بالوضع المحدد. .TP \fBEACCES\fP .\" Note that this isn't consistent with the same case for sem_open() احتوى \fIname\fP على أكثر من شرطة مائلة واحدة. .TP \fBEEXIST\fP حُدد كل من \fBO_CREAT\fP و \fBO_EXCL\fP في \fIoflag\fP، لكن قائمة انتظار بهذا \fIname\fP موجودة مسبقًا. .TP \fBEINVAL\fP .\" glibc checks whether the name starts with a "/" and if not, .\" gives this error لا يتبع \fIname\fP التنسيق المذكور في \fBmq_overview\fP(7). .TP \fBEINVAL\fP حُدد \fBO_CREAT\fP في \fIoflag\fP، وكان \fIattr\fP غير فارغ، لكن \fIattr\->mq_maxmsg\fP أو \fIattr\->mq_msqsize\fP كان غير صالح. يجب أن يكون كلا هذين الحقلين أكبر من الصفر. في عملية غير مميزة (لا تملك القدرة \fBCAP_SYS_RESOURCE\fP)، يجب أن يكون \fIattr\->mq_maxmsg\fP أقل من أو يساوي حد \fImsg_max\fP، ويجب أن يكون \fIattr\->mq_msgsize\fP أقل من أو يساوي حد \fImsgsize_max\fP. بالإضافة إلى ذلك، حتى في عملية مميزة، لا يمكن أن يتجاوز \fIattr\->mq_maxmsg\fP حد \fBHARD_MAX\fP. (انظر \fBmq_overview\fP(7) لتفاصيل هذه الحدود.) .TP \fBEMFILE\fP وُصل إلى الحد الخاص بكل عملية لعدد واصفات الملفات وقوائم انتظار الرسائل المفتوحة (انظر وصف \fBRLIMIT_NOFILE\fP في \fBgetrlimit\fP(2)). .TP \fBENAMETOOLONG\fP الاسم \fIname\fP كان طويلاً جداً. .TP \fBENFILE\fP وُصل إلى الحد على مستوى النظام للعدد الإجمالي للملفات وقوائم انتظار الرسائل المفتوحة. .TP \fBENOENT\fP لم يحُدد العلم \fBO_CREAT\fP في \fIoflag\fP، ولا توجد قائمة انتظار بهذا \fIname\fP. .TP \fBENOENT\fP .\" Note that this isn't consistent with the same case for sem_open() كان \fIname\fP مجرد "/" دون أحرف أخرى بعده. .TP \fBENOMEM\fP ذاكرة غير كافية. .TP \fBENOSPC\fP مساحة غير كافية لإنشاء قائمة انتظار رسائل جديدة. حدث هذا غالبًا بسبب الوصول إلى حد \fIqueues_max\fP؛ انظر \fBmq_overview\fP(7). .SH السمات للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. الواجهة السمة القيمة T{ .na .nh \fBmq_open\fP() T} سلامة الخيوط MT\-Safe .TE .SH الإصدارات .SS "الاختلافات بين مكتبة C والنواة" دالة المكتبة \fBmq_open\fP() مطبقة فوق استدعاء نظام بنفس الاسم. تقوم دالة المكتبة بالتحقق من أن \fIname\fP يبدأ بشرطة مائلة (/) وتعطي الخطأ \fBEINVAL\fP إذا لم يبدأ بها. يتوقع استدعاء النظام في النواة ألا يحتوي \fIname\fP على شرطة مائلة سابقة، لذا تمرر دالة مكتبة C \fIname\fP بدون الشرطة المائلة السابقة (أي \fIname+1\fP) إلى استدعاء النظام. .SH المعايير POSIX.1\-2008. .SH التاريخ POSIX.1\-2001. .SH العلل قبل لينكس 2.6.14، لم يكن umask العملية مطبقًا على الأذونات المحددة في \fImode\fP. .SH "انظر أيضًا" \fBmq_close\fP(3), \fBmq_getattr\fP(3), \fBmq_notify\fP(3), \fBmq_receive\fP(3), \fBmq_send\fP(3), \fBmq_unlink\fP(3), \fBmq_overview\fP(7) .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .