.\" -*- 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_overview 7 "8 فبراير 2026" "صفحات دليل لينكس 6.18" .SH الاسم mq_overview \- نظرة عامة على قوائم انتظار الرسائل POSIX .SH الوصف تسمح قوائم انتظار الرسائل POSIX للعمليات بتبادل البيانات في شكل رسائل. تختلف واجهة البرمجة هذه عن تلك المقدمة من قوائم انتظار رسائل System V (\fBmsgget\fP(2)، \fBmsgsnd\fP(2)، \fBmsgrcv\fP(2)، إلخ)، ولكنها توفر وظائف مماثلة. .P تُنشأ وتُفتح قوائم انتظار الرسائل باستخدام \fBmq_open\fP(3)؛ تُرجع هذه الدالة \fIواصف قائمة انتظار رسائل\fP (\fImqd_t\fP)، يُستخدم للإشارة إلى قائمة انتظار الرسائل المفتوحة في الاستدعاءات اللاحقة. تُعرّف كل قائمة انتظار رسائل باسم بالصيغة \fI/somename\fP؛ أي سلسلة منتهية بقيمة خالية يصل طولها إلى \fBNAME_MAX\fP (أي 255) حرفًا تتكون من شرطة مائلة أولية، متبوعة بحرف واحد أو أكثر، لا تحتوي أي منها على شرطات مائلة. يمكن لعمليتين العمل على نفس قائمة الانتظار بتمرير نفس الاسم إلى \fBmq_open\fP(3). .P تُنقل الرسائل إلى ومن قائمة انتظار باستخدام \fBmq_send\fP(3) و \fBmq_receive\fP(3). عندما تنتهي عملية من استخدام قائمة الانتظار، تُغلقها باستخدام \fBmq_close\fP(3)، وعندما لا تكون قائمة الانتظار مطلوبة بعد الآن، يمكن حذفها باستخدام \fBmq_unlink\fP(3). يمكن استرداد سمات قائمة الانتظار و(في بعض الحالات) تعديلها باستخدام \fBmq_getattr\fP(3) و \fBmq_setattr\fP(3). يمكن لعملية طلب إعلام غير متزامن بوصول رسالة إلى قائمة انتظار كانت فارغة سابقًا باستخدام \fBmq_notify\fP(3). .P واصف قائمة انتظار الرسائل هو مرجع إلى \fIوصف قائمة انتظار رسائل مفتوحة\fP (انظر \fBopen\fP(2)). بعد \fBfork\fP(2)، يرث الطفل نسخًا من واصفات قائمة انتظار الرسائل الخاصة بالأصل، وتشير هذه الواصفات إلى نفس أوصاف قائمة انتظار الرسائل المفتوحة مثل واصفات قائمة انتظار الرسائل المقابلة في الأصل. تشارك واصفات قائمة انتظار الرسائل المقابلة في العمليتين الأعلام (\fImq_flags\fP) المرتبطة بوصف قائمة انتظار الرسائل المفتوحة. .P لكل رسالة \fIأولوية\fP مرتبطة، وتُسلم الرسائل دائمًا إلى العملية المستقبلة ذات الأولوية الأعلى أولاً. تتراوح أولويات الرسائل من 0 (منخفض) إلى \fIsysconf(_SC_MQ_PRIO_MAX)\ \-\ 1\fP (مرتفع). على لينكس، تُرجع \fIsysconf(_SC_MQ_PRIO_MAX)\fP 32768، ولكن POSIX.1 يتطلب فقط أن يدعم التنفيذ أولويات على الأقل في النطاق 0 إلى 31؛ توفر بعض التطبيقات هذا النطاق فقط. .P يصف باقي هذا القسم بعض التفاصيل المحددة لتنفيذ لينكس لقوائم انتظار الرسائل POSIX. .SS "واجهات المكتبة واستدعاءات النظام" في معظم الحالات، تُنفذ واجهات المكتبة \fBmq_*\fP() المذكورة أعلاه فوق استدعاءات النظام الأساسية التي تحمل نفس الاسم. يُشار إلى الانحرافات عن هذا المخطط في الجدول التالي: .RS .TS lB lB l l. واجهة المكتبة استدعاء النظام mq_close(3) close(2) mq_getattr(3) mq_getsetattr(2) mq_notify(3) mq_notify(2) mq_open(3) mq_open(2) mq_receive(3) mq_timedreceive(2) mq_send(3) mq_timedsend(2) mq_setattr(3) mq_getsetattr(2) mq_timedreceive(3) mq_timedreceive(2) mq_timedsend(3) mq_timedsend(2) mq_unlink(3) mq_unlink(2) .TE .RE .SS الإصدارات قوائم انتظار الرسائل POSIX مدعومة منذ لينكس 2.6.6. دعم glibc متاح منذ glibc 2.3.4. .SS "تهيئة النواة" دعم قوائم انتظار الرسائل POSIX قابل للتهيئة عبر خيار تهيئة النواة \fBCONFIG_POSIX_MQUEUE\fP. هذا الخيار مفعل مبدئيًا. .SS الاستمرارية قوائم انتظار الرسائل POSIX لها استمرارية نواة: إذا لم تُحذف بواسطة \fBmq_unlink\fP(3)، ستظل قائمة انتظار الرسائل موجودة حتى إيقاف تشغيل النظام. .SS الربط يجب ترجمة البرامج التي تستخدم واجهة برمجة تطبيقات قائمة انتظار الرسائل POSIX باستخدام \fIcc \-lrt\fP للربط مع مكتبة الوقت الفعلي، \fIlibrt\fP. .SS "واجهات /proc" يمكن استخدام الواجهات التالية لتحديد كمية ذاكرة النواة التي تستهلكها قوائم انتظار الرسائل POSIX ولتعيين السمات المبدئية لقوائم انتظار الرسائل الجديدة: .TP \fI/proc/sys/fs/mqueue/msg_default\fP (منذ لينكس 3.5) يُعرّف هذا الملف القيمة المستخدمة لإعداد \fImq_maxmsg\fP لقائمة انتظار جديدة عند إنشاء قائمة الانتظار باستدعاء \fBmq_open\fP(3) حيث يُحدد \fIattr\fP كـ NULL. القيمة المبدئية لهذا الملف هي 10. الحد الأدنى والأقصى هما كما في \fI/proc/sys/fs/mqueue/msg_max\fP. ستكون القيمة المبدئية \fImq_maxmsg\fP لقائمة انتظار جديدة هي الأصغر بين \fImsg_default\fP و \fImsg_max\fP. قبل لينكس 2.6.28، كانت القيمة المبدئية \fImq_maxmsg\fP هي 10؛ من لينكس 2.6.28 إلى لينكس 3.4، كانت القيمة المبدئية هي القيمة المحددة للحد \fImsg_max\fP. .TP \fI/proc/sys/fs/mqueue/msg_max\fP يمكن استخدام هذا الملف لعرض وتغيير قيمة السقف للحد الأقصى لعدد الرسائل في قائمة انتظار. تعمل هذه القيمة كسقف للوسيطة \fIattr\->mq_maxmsg\fP المعطاة لـ \fBmq_open\fP(3). القيمة المبدئية لـ \fImsg_max\fP هي 10. الحد الأدنى هو 1 (10 قبل لينكس 2.6.28). الحد الأعلى هو \fBHARD_MSGMAX\fP. يُتجاهل حد \fImsg_max\fP للعمليات المميزة (\fBCAP_SYS_RESOURCE\fP)، ولكن مع ذلك يُفرض سقف \fBHARD_MSGMAX\fP. .IP تغير تعريف \fBHARD_MSGMAX\fP عبر إصدارات النواة: .RS .IP \[bu] 3 حتى لينكس 2.6.32: \fI131072\ /\ sizeof(void\ *)\fP .IP \[bu] لينكس 2.6.33 إلى لينكس 3.4: \fI(32768\ *\ sizeof(void\ *) / 4)\fP .IP \[bu] .\" commit 5b5c4d1a1440e94994c73dddbad7be0676cd8b9a منذ لينكس 3.5: 65,536 .RE .TP \fI/proc/sys/fs/mqueue/msgsize_default\fP (منذ لينكس 3.5) يُعرّف هذا الملف القيمة المُستخدمة لإعداد \fImq_msgsize\fP لقائمة انتظار جديدة عند إنشاء القائمة باستدعاء \fBmq_open\fP(3) حيث يُحدد \fIattr\fP كـ NULL. القيمة المبدئية لهذا الملف هي 8192 (بايت). الحد الأدنى والأقصى كما في \fI/proc/sys/fs/mqueue/msgsize_max\fP. إذا تجاوز \fImsgsize_default\fP قيمة \fImsgsize_max\fP، فتُحد القيمة المبدئية \fImq_msgsize\fP لقائمة الانتظار الجديدة إلى حد \fImsgsize_max\fP. قبل لينكس 2.6.28، كانت القيمة المبدئية \fImq_msgsize\fP هي 8192؛ ومن لينكس 2.6.28 إلى لينكس 3.4، كانت القيمة المبدئية هي القيمة المُحددة لحد \fImsgsize_max\fP. .TP \fI/proc/sys/fs/mqueue/msgsize_max\fP يُستخدم هذا الملف لعرض وتغيير الحد الأعلى لأقصى حجم للرسالة. تعمل هذه القيمة كحد أعلى للوسيطة \fIattr\->mq_msgsize\fP المُعطاة لـ \fBmq_open\fP(3). القيمة المبدئية لـ \fImsgsize_max\fP هي 8192 بايت. القيمة الدنيا هي 128 (8192 قبل لينكس 2.6.28). اختلف الحد الأعلى لـ \fImsgsize_max\fP عبر إصدارات النواة: .RS .IP \[bu] 3 قبل لينكس 2.6.28، الحد الأعلى هو \fBINT_MAX\fP. .IP \[bu] من لينكس 2.6.28 إلى لينكس 3.4، الحد هو 1,048,576. .IP \[bu] منذ لينكس 3.5، الحد هو 16,777,216 (\fBHARD_MSGSIZEMAX\fP). .RE .IP يُتجاهل حد \fImsgsize_max\fP للعمليات المميزة (\fBCAP_SYS_RESOURCE\fP)، ولكن منذ لينكس 3.5، يُفرض الحد الأعلى \fBHARD_MSGSIZEMAX\fP للعمليات المميزة. .TP \fI/proc/sys/fs/mqueue/queues_max\fP يُستخدم هذا الملف لعرض وتغيير الحد على مستوى النظام لعدد قوائم انتظار الرسائل التي يُمكن إنشاؤها. القيمة المبدئية لـ \fIqueues_max\fP هي 256. لا يُفرض حد أعلى على حد \fIqueues_max\fP؛ يُمكن للعمليات المميزة (\fBCAP_SYS_RESOURCE\fP) تجاوز الحد (لكن انظر BUGS). .SS "حد المورد" يُوصف حد المورد \fBRLIMIT_MSGQUEUE\fP، الذي يضع حدًا على مقدار المساحة التي يُمكن أن تستهلكها جميع قوائم انتظار الرسائل التابعة لمعرف المستخدم الحقيقي لعملية ما، في \fBgetrlimit\fP(2). .SS "وصل نظام ملفات قائمة انتظار الرسائل" في لينكس، تُنشأ قوائم انتظار الرسائل في نظام ملفات افتراضي. (قد تُوفر التطبيقات الأخرى أيضًا هذه الميزة، لكن التفاصيل قد تختلف.) يُمكن وصل نظام الملفات هذا (بواسطة المستخدم الفائق) باستخدام الأوامر التالية: .P .in +4n .EX #\fB mkdir /dev/mqueue\fP #\fB mount \-t mqueue none /dev/mqueue\fP .EE .in .P يُفعّل البت اللاصق آليًا على دليل الوصل. .P بعد وصل نظام الملفات، يُمكن عرض قوائم انتظار الرسائل على النظام والتعامل معها باستخدام الأوامر المُستخدمة عادةً للملفات (مثل \fBls\fP(1) و \fBrm\fP(1)). .P تتكون محتويات كل ملف في الدليل من سطر واحد يحتوي على معلومات حول القائمة: .P .in +4n .EX $\fB cat /dev/mqueue/mymq\fP QSIZE:129 NOTIFY:2 SIGNO:0 NOTIFY_PID:8260 .EE .in .P هذه الحقول كما يلي: .TP \fBQSIZE\fP عدد بايتات البيانات في جميع الرسائل في القائمة (لكن انظر BUGS). .TP \fBNOTIFY_PID\fP إذا كانت هذه القيمة غير صفرية، فقد استخدمت العملية بهذا PID \fBmq_notify\fP(3) للتسجيل للإشعار غير المتزامن بالرسائل، وتصف الحقول المتبقية كيفية حدوث الإشعار. .TP \fBNOTIFY\fP طريقة الإشعار: 0 هي \fBSIGEV_SIGNAL\fP؛ 1 هي \fBSIGEV_NONE\fP؛ و 2 هي \fBSIGEV_THREAD\fP. .TP \fBSIGNO\fP رقم الإشارة المُستخدم لـ \fBSIGEV_SIGNAL\fP. .SS "تطبيق لينكس لواصفات قائمة انتظار الرسائل" في لينكس، واصف قائمة الرسائل هو في الواقع واصف ملف. (لا يتطلب POSIX مثل هذا التنفيذ.) هذا يعني أنه يمكن مراقبة واصف قائمة الرسائل باستخدام \fBselect\fP(2) أو \fBpoll\fP(2) أو \fBepoll\fP(7). هذا غير محمول. .P علامة الإغلاق عند التنفيذ (انظر \fBopen\fP(2)) تُضبط آليًا على واصف الملف الذي يُرجعه \fBmq_open\fP(2). .SS "مساحات أسماء IPC" لمناقشة تفاعل كائنات قائمة رسائل POSIX ومساحات أسماء IPC، انظر \fBipc_namespaces\fP(7). .SH ملاحظات قوائم رسائل System V (\fBmsgget\fP(2) و \fBmsgsnd\fP(2) و \fBmsgrcv\fP(2) وغيرها) هي واجهة برمجة تطبيقات أقدم لتبادل الرسائل بين العمليات. توفر قوائم رسائل POSIX واجهة مصممة بشكل أفضل من قوائم رسائل System V؛ من ناحية أخرى، قوائم رسائل POSIX أقل توفرًا على نطاق واسع (خاصة على الأنظمة الأقدم) من قوائم رسائل System V. .P لا يدعم لينكس حاليًا (لينكس 2.6.26) استخدام قوائم التحكم في الوصول (ACLs) لقوائم رسائل POSIX. .SH العلل من لينكس 3.5 إلى لينكس 3.14، فرضت النواة سقفًا قدره 1024 (\fBHARD_QUEUESMAX\fP) على القيمة التي يمكن رفع حد \fIqueues_max\fP إليها، وطُبق السقف حتى للعمليات المميزة. أُزيلت قيمة السقف هذه في لينكس 3.14، وأزالت التصحيحات للينكس المستقر 3.5.x إلى 3.13.x السقف أيضًا. .P .\" commit d6629859b36d .\" commit de54b9ac253787c366bbfb28d901a31954eb3511 كما نُفذ (ووُثّق) أصلاً، عرض حقل QSIZE العدد الإجمالي للبايتات (التي يوفرها المستخدم) في جميع الرسائل في قائمة الرسائل. غيرت بعض التغييرات في لينكس 3.5 السلوك عن غير قصد، بحيث تضمن هذا الحقل أيضًا عدد بايتات النفقات العامة للنواة المستخدمة لتخزين الرسائل في القائمة. صُحح هذا التراجع السلوكي في لينكس 4.2 (وسلسلة النواة المستقرة السابقة)، بحيث تضمن العدد مرة أخرى فقط بايتات بيانات المستخدم في الرسائل في القائمة. .SH أمثلة مثال على استخدام وظائف قائمة الرسائل المختلفة موضح في \fBmq_notify\fP(3). .SH "انظر أيضًا" \fBgetrlimit\fP(2)، \fBmq_getsetattr\fP(2)، \fBpoll\fP(2)، \fBselect\fP(2)، \fBmq_close\fP(3)، \fBmq_getattr\fP(3)، \fBmq_notify\fP(3)، \fBmq_open\fP(3)، \fBmq_receive\fP(3)، \fBmq_send\fP(3)، \fBmq_unlink\fP(3)، \fBepoll\fP(7)، \fBnamespaces\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 .