Scroll to navigation

mq_getattr(3) Library Functions Manual mq_getattr(3)

الاسم

mq_getattr, mq_setattr - جلب/تعيين خصائص طابور الرسائل

المكتبة

مكتبة الوقت الحقيقي (librt، -lrt)

موجز

#include <mqueue.h>
int mq_getattr(mqd_t mqdes, struct mq_attr *attr);
int mq_setattr(mqd_t mqdes, const struct mq_attr *restrict newattr,
               struct mq_attr *restrict oldattr);

الوصف

mq_getattr() و mq_setattr() تجلب وتعدل على التوالي خصائص طابور الرسائل المشار إليه بواسطة واصف طابور الرسائل mqdes.

mq_getattr() تُرجع بنية mq_attr في المخزن المؤقت المشار إليه بواسطة attr. هذه البنية تُعرف كالتالي:


struct mq_attr {

long mq_flags; /* الرايات: 0 أو O_NONBLOCK */
long mq_maxmsg; /* الحد الأقصى لعدد الرسائل في الطابور */
long mq_msgsize; /* الحد الأقصى لحجم الرسالة (بالبايت) */
long mq_curmsgs; /* عدد الرسائل الموجودة في الطابور حالياً */ };

حقل mq_flags يحتوي على أعلام مرتبطة بوصف طابور الرسائل المفتوح. هذا الحقل يُهيأ عندما يُنشأ الطابور بواسطة mq_open(3). العلم الوحيد الذي يمكن أن يظهر في هذا الحقل هو O_NONBLOCK.

حقل mq_maxmsg و mq_msgsize يُضبطان عندما يُنشأ طابور الرسائل بواسطة mq_open(3). حقل mq_maxmsg هو حد أعلى لعدد الرسائل التي يمكن وضعها في الطابور باستخدام mq_send(3). حقل mq_msgsize هو حد أعلى لحجم الرسائل التي يمكن وضعها في الطابور. كلا هذين الحقلين يجب أن يكون لهما قيمة أكبر من الصفر. ملفا /proc يضعان سقوفًا لقيم هذه الحقول موصوفان في mq_overview(7).

حقل mq_curmsgs يُرجع عدد الرسائل المحتجزة حاليًا في الطابور.

mq_setattr() يضبط خصائص طابور الرسائل باستخدام المعلومات المقدمة في بنية mq_attr المشار إليها بواسطة newattr. الخاصية الوحيدة التي يمكن تعديلها هي ضبط العلم O_NONBLOCK في mq_flags. الحقول الأخرى في newattr تُتجاهل. إذا كان حقل oldattr ليس NULL، فإن المخزن المؤقت الذي يشير إليه يُستخدم لإرجاع بنية mq_attr تحتوي على نفس المعلومات التي تُرجعها mq_getattr().

قيمة الإرجاع

عند النجاح mq_getattr() و mq_setattr() يُرجعان 0؛ عند الخطأ، يُرجع -1، مع ضبط errno للإشارة إلى الخطأ.

الأخطاء

واصف قائمة رسائل المحدد في mqdes غير صالح.
newattr->mq_flags احتوى على بتات مضبوطة غير O_NONBLOCK.

السمات

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

الواجهة السمة القيمة
mq_getattr(), mq_setattr() سلامة الخيوط MT-Safe

الإصدارات

على لينكس، mq_getattr() و mq_setattr() هما دالتا مكتبة مبنيتان فوق استدعاء النظام mq_getsetattr(2).

المعايير

POSIX.1-2008.

التاريخ

POSIX.1-2001.

أمثلة

البرنامج أدناه يمكن استخدامه لعرض القيم المبدئية mq_maxmsg و mq_msgsize التي تُسند إلى طابور رسائل يُنشأ باستدعاء mq_open(3) حيث معامل attr هو NULL. إليك مثال لتشغيل البرنامج:


$ ./a.out /testq;
Maximum # of messages on queue:   10
Maximum message size:             8192

منذ لينكس 3.5، ملفات /proc التالية (الموصوفة في mq_overview(7)) يمكن استخدامها للتحكم في المبدئيات:


$ uname -sr;
Linux 3.8.0
$ cat /proc/sys/fs/mqueue/msg_default;
10
$ cat /proc/sys/fs/mqueue/msgsize_default;
8192

مصدر البرنامج

#include <err.h>
#include <fcntl.h>
#include <mqueue.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <unistd.h>
int
main(int argc, char *argv[])
{

mqd_t mqd;
struct mq_attr attr;
if (argc != 2) {
fprintf(stderr, "Usage: %s mq-name\n", argv[0]);
exit(EXIT_FAILURE);
}
mqd = mq_open(argv[1], O_CREAT | O_EXCL, 0600, NULL);
if (mqd == (mqd_t) -1)
err(EXIT_FAILURE, "mq_open");
if (mq_getattr(mqd, &attr) == -1)
err(EXIT_FAILURE, "mq_getattr");
printf("Maximum # of messages on queue: %ld\n", attr.mq_maxmsg);
printf("Maximum message size: %ld\n", attr.mq_msgsize);
if (mq_unlink(argv[1]) == -1)
err(EXIT_FAILURE, "mq_unlink");
exit(EXIT_SUCCESS); }

انظر أيضًا

mq_close(3), mq_notify(3), mq_open(3), mq_receive(3), mq_send(3), mq_unlink(3), mq_overview(7)

ترجمة

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

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

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

8 فبراير 2026 صفحات دليل لينكس (لم تصدر بعد)