.\" -*- coding: UTF-8 -*- '\" t .\" Copyright 1993, Luigi P. Bai .\" Copyright 1993, Giorgio Ciucci .\" Copyright 2004-2005, 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 shmctl 2 "8 فبراير 2026" "صفحات دليل لينكس 6.18" .SH الاسم shmctl \- التحكم في الذاكرة المشتركة System V .SH المكتبة مكتبة سي المعيارية (\fIlibc\fP،\ \fI\-lc\fP) .SH موجز .nf \fB#include \fP .P \fBint shmctl(int \fP\fIshmid\fP\fB, int \fP\fIop\fP\fB, struct shmid_ds *\fP\fIbuf\fP\fB);\fP .fi .SH الوصف \fBshmctl\fP() ينفذ عملية التحكم المحددة بواسطة \fIop\fP على مقطع الذاكرة المشتركة System\ V الذي يُعطى معرفه في \fIshmid\fP. .P الوسيطة \fIbuf\fP هي مؤشر إلى بنية \fIshmid_ds\fP، المُعرّفة في \fI\fP كما يلي: .P .in +4n .EX struct shmid_ds { struct ipc_perm shm_perm; /* Ownership and permissions */ size_t shm_segsz; /* Size of segment (bytes) */ time_t shm_atime; /* Last attach time */ time_t shm_dtime; /* Last detach time */ time_t shm_ctime; /* Creation time/time of last modification via shmctl() */ pid_t shm_cpid; /* PID of creator */ pid_t shm_lpid; /* PID of last shmat(2)/shmdt(2) */ shmatt_t shm_nattch; /* # of current attaches */ ... }; .EE .in .P حقول بنية \fIshmid_ds\fP هي كما يلي: .TP 12 \fIshm_perm\fP هذه بنية \fIipc_perm\fP (انظر أدناه) تحدد أذونات الوصول على مقطع الذاكرة المشتركة. .TP \fIshm_segsz\fP حجم مقطع الذاكرة المشتركة بالبايت. .TP \fIshm_atime\fP وقت آخر استدعاء نظام \fBshmat\fP(2) الذي أرفق هذا المقطع. .TP \fIshm_dtime\fP وقت آخر استدعاء نظام \fBshmdt\fP(2) الذي فصل هذا المقطع. .TP \fIshm_ctime\fP وقت إنشاء المقطع أو وقت آخر عملية \fBshmctl\fP() \fBIPC_SET\fP. .TP \fIshm_cpid\fP معرف العملية التي أنشأت مقطع الذاكرة المشتركة. .TP \fIshm_lpid\fP معرف آخر عملية نفذت استدعاء نظام \fBshmat\fP(2) أو \fBshmdt\fP(2) على هذا المقطع. .TP \fIshm_nattch\fP عدد العمليات التي لديها هذا المقطع مُرفقًا. .P بنية \fIipc_perm\fP مُعرفة كالتالي (الحقول المميزة قابلة للضبط باستخدام \fBIPC_SET\fP): .P .in +4n .EX struct ipc_perm { key_t __key; /* Key supplied to shmget(2) */ uid_t \f[B]uid\fR; /* Effective UID of owner */ gid_t \f[B]gid\fR; /* Effective GID of owner */ uid_t cuid; /* Effective UID of creator */ gid_t cgid; /* Effective GID of creator */ unsigned short \f[B]mode\fR; /* \f[B]Permissions\fR + SHM_DEST and SHM_LOCKED flags */ unsigned short __seq; /* Sequence number */ }; .EE .in .P تحدد البتات الـ 9 الأقل أهمية في حقل \fImode\fP لهيكل \fIipc_perm\fP أذونات الوصول لقطاع الذاكرة المشتركة. بتات الأذونات هي كما يلي: .TS l l. 0400 مقروء من المستخدم 0200 الكتابة بواسطة المستخدم 0040 مقروء من المجموعة 0020 الكتابة بواسطة المجموعة 0004 مقروء من الآخرين 0002 الكتابة بواسطة الآخرين .TE .P البتات 0100 و 0010 و 0001 (بتات التنفيذ) غير مستخدمة من قبل النظام. (ليس من الضروري الحصول على إذن تنفيذ على مقطع لتنفيذ استدعاء \fBshmat\fP(2) مع العلم \fBSHM_EXEC\fP.) .P القيم الصالحة لـ \fIop\fP هي: .TP \fBIPC_STAT\fP نسخ المعلومات من بنية بيانات النواة المرتبطة بـ \fIshmid\fP إلى بنية \fIshmid_ds\fP المشار إليها بواسطة \fIbuf\fP. يجب أن يكون لدى المستدعي إذن قراءة على مقطع الذاكرة المشتركة. .TP \fBIPC_SET\fP كتابة قيم بعض أعضاء بنية \fIshmid_ds\fP المشار إليها بواسطة \fIbuf\fP إلى بنية بيانات النواة المرتبطة بمقطع الذاكرة المشتركة هذا، مع تحديث العضو \fIshm_ctime\fP الخاص به أيضًا. .IP الحقول التالية تُحدّث: \fIshm_perm.uid\fP و \fIshm_perm.gid\fP و (أقل 9 بتات أهمية من) \fIshm_perm.mode\fP. .IP يجب أن يتطابق UID الفعّال للعملية المستدعية مع المالك (\fIshm_perm.uid\fP) أو المنشئ (\fIshm_perm.cuid\fP) لمقطع الذاكرة المشتركة، أو يجب أن يكون المستدعي متميزًا. .TP \fBIPC_RMID\fP وضع علامة على المقطع ليتم تدميره. سيتم تدمير المقطع فعليًا فقط بعد أن تفصله آخر عملية (أي عندما يكون العضو \fIshm_nattch\fP في البنية المرتبطة \fIshmid_ds\fP صفرًا). يجب أن يكون المستدعي هو المالك أو المنشئ للمقطع، أو أن يكون متميزًا. الوسيطة \fIbuf\fP تُتجاهل. .IP إذا تم وضع علامة على مقطع للتدمير، فسيتم تعيين العلم (غير القياسي) \fBSHM_DEST\fP لحقل \fIshm_perm.mode\fP في بنية البيانات المرتبطة التي يتم استردادها بواسطة \fBIPC_STAT\fP. .IP يجب على المستدعي \fIأن\fP يضمن تدمير المقطع في النهاية؛ وإلا فإن صفحاته التي تم جلبها ستبقى في الذاكرة أو المبادلة. .IP انظر أيضًا وصف \fI/proc/sys/kernel/shm_rmid_forced\fP في \fBproc\fP(5). .TP \fBIPC_INFO\fP (خاص بلينكس) إرجاع معلومات حول حدود ومعلمات الذاكرة المشتركة على مستوى النظام في البنية المشار إليها بواسطة \fIbuf\fP. هذه البنية من النوع \fIshminfo\fP (وبالتالي، يلزم تحويل النوع)، معرفة في \fI\fP إذا تم تعريف ماكرو اختبار الميزة \fB_GNU_SOURCE\fP: .IP .in +4n .EX struct shminfo { unsigned long shmmax; /* Maximum segment size */ unsigned long shmmin; /* Minimum segment size; always 1 */ unsigned long shmmni; /* Maximum number of segments */ unsigned long shmseg; /* Maximum number of segments that a process can attach; unused within kernel */ unsigned long shmall; /* Maximum number of pages of shared memory, system\-wide */ }; .EE .in .IP يمكن تغيير إعدادات \fIshmmni\fP و \fIshmmax\fP و \fIshmall\fP عبر ملفات \fI/proc\fP التي تحمل الاسم نفسه؛ انظر \fBproc\fP(5) للتفاصيل. .TP \fBSHM_INFO\fP (خاص بلينكس) إرجاع بنية \fIshm_info\fP تحتوي حقولها على معلومات حول موارد النظام المستهلكة بواسطة الذاكرة المشتركة. هذه البنية معرفة في \fI\fP إذا تم تعريف ماكرو اختبار الميزة \fB_GNU_SOURCE\fP: .IP .in +4n .EX struct shm_info { int used_ids; /* # of currently existing segments */ unsigned long shm_tot; /* Total number of shared memory pages */ unsigned long shm_rss; /* # of resident shared memory pages */ unsigned long shm_swp; /* # of swapped shared memory pages */ unsigned long swap_attempts; /* Unused since Linux 2.4 */ unsigned long swap_successes; /* Unused since Linux 2.4 */ }; .EE .in .TP \fBSHM_STAT\fP (خاص بلينكس) إرجاع بنية \fIshmid_ds\fP كما في \fBIPC_STAT\fP. ومع ذلك، فإن وسيط \fIshmid\fP ليس معرف مقطع، بل هو فهرس في المصفوفة الداخلية للنواة التي تحتفظ بمعلومات حول جميع مقاطع الذاكرة المشتركة على النظام. .TP \fBSHM_STAT_ANY\fP (خاص بلينكس، منذ لينكس 4.17) إرجاع بنية \fIshmid_ds\fP كما في \fBSHM_STAT\fP. ومع ذلك، لا يتم التحقق من \fIshm_perm.mode\fP لحق الوصول للقراءة لـ \fIshmid\fP، مما يعني أن أي مستخدم يمكنه استخدام هذه العملية (تماماً كما يمكن لأي مستخدم قراءة \fI/proc/sysvipc/shm\fP للحصول على نفس المعلومات). .P يمكن للمستدعي منع أو السماح بمبادلة مقطع ذاكرة مشتركة بقيم \fIop\fP التالية: .TP \fBSHM_LOCK\fP (خاص بلينكس) منع مبادلة مقطع الذاكرة المشتركة. يجب على المستدعي جلب أي صفحات مطلوب وجودها بعد تمكين القفل. إذا تم قفل مقطع، فسيتم تعيين العلم (غير القياسي) \fBSHM_LOCKED\fP لحقل \fIshm_perm.mode\fP في بنية البيانات المرتبطة المسترجعة بواسطة \fBIPC_STAT\fP. .TP \fBSHM_UNLOCK\fP (خاص بلينكس) فتح قفل المقطع، مما يسمح بمبادلته للخارج. .P .\" There was some weirdness in Linux 2.6.9: SHM_LOCK and SHM_UNLOCK could .\" be applied to a segment, regardless of ownership of the segment. .\" This was a botch-up in the move to RLIMIT_MEMLOCK, and was fixed .\" in Linux 2.6.10. MTK, May 2005 قبل لينكس 2.6.10، فقط عملية مميزة يمكنها استخدام \fBSHM_LOCK\fP و \fBSHM_UNLOCK\fP. منذ لينكس 2.6.10، يمكن لعملية غير مميزة استخدام هذه العمليات إذا كان معرف المستخدم الفعال الخاص بها يطابق معرف المستخدم المالك أو المنشئ للمقطع، و (لـ \fBSHM_LOCK\fP) تقع كمية الذاكرة المراد قفلها ضمن حد المورد \fBRLIMIT_MEMLOCK\fP (انظر \fBsetrlimit\fP(2)). .SH "قيمة الإرجاع" عملية \fBIPC_INFO\fP أو \fBSHM_INFO\fP الناجحة تُرجع فهرس أعلى إدخال مستخدم في المصفوفة الداخلية للنواة التي تسجل معلومات حول جميع مقاطع الذاكرة المشتركة. (يمكن استخدام هذه المعلومات مع عمليات \fBSHM_STAT\fP أو \fBSHM_STAT_ANY\fP المتكررة للحصول على معلومات حول جميع مقاطع الذاكرة المشتركة على النظام.) عملية \fBSHM_STAT\fP الناجحة تُرجع معرف مقطع الذاكرة المشتركة الذي تم إعطاء فهرسه في \fIshmid\fP. العمليات الأخرى تُرجع 0 عند النجاح. .P عند الخطأ، تُعاد القيمة \-1، ويُضبط \fIerrno\fP للإشارة إلى الخطأ. .SH الأخطاء .TP \fBEACCES\fP يتم طلب \fBIPC_STAT\fP أو \fBSHM_STAT\fP و \fIshm_perm.mode\fP لا يسمح بحق الوصول للقراءة لـ \fIshmid\fP، ولا تمتلك العملية المستدعية القدرة \fBCAP_IPC_OWNER\fP في مساحة المستخدم التي تحكم مساحة IPC الخاصة بها. .TP \fBEFAULT\fP الوسيط \fIop\fP له القيمة \fBIPC_SET\fP أو \fBIPC_STAT\fP ولكن العنوان المشار إليه بواسطة \fIbuf\fP غير قابل للوصول. .TP \fBEIDRM\fP يشير \fIshmid\fP إلى معرف مزال. .TP \fBEINVAL\fP \fIshmid\fP ليس معرفاً صالحاً، أو \fIop\fP ليست عملية صالحة. أو: لعملية \fBSHM_STAT\fP أو \fBSHM_STAT_ANY\fP، تشير قيمة الفهرس المحددة في \fIshmid\fP إلى فتحة مصفوفة غير مستخدمة حالياً. .TP \fBENOMEM\fP (منذ لينكس 2.6.9)، تم تحديد \fBSHM_LOCK\fP وكان حجم المقطع المراد قفله يعني أن إجمالي البايتات في مقاطع الذاكرة المشتركة المقفلة سيتجاوز الحد لمعرف المستخدم الحقيقي للعملية المستدعية. يتم تعريف هذا الحد بواسطة حد المورد الناعم \fBRLIMIT_MEMLOCK\fP (انظر \fBsetrlimit\fP(2)). .TP \fBEOVERFLOW\fP يتم محاولة \fBIPC_STAT\fP، وقيمة GID أو UID كبيرة جداً بحيث لا يمكن تخزينها في البنية المشار إليها بواسطة \fIbuf\fP. .TP \fBEPERM\fP يتم محاولة \fBIPC_SET\fP أو \fBIPC_RMID\fP، ومعرف المستخدم الفعال للعملية المستدعية ليس معرف المنشئ (الموجود في \fIshm_perm.cuid\fP)، أو المالك (الموجود في \fIshm_perm.uid\fP)، ولم تكن العملية مميزة (لينكس: لم تمتلك القدرة \fBCAP_SYS_ADMIN\fP). .IP أو (قبل لينكس 2.6.9)، تم تحديد \fBSHM_LOCK\fP أو \fBSHM_UNLOCK\fP، ولكن العملية لم تكن مميزة (لينكس: لم تمتلك القدرة \fBCAP_IPC_LOCK\fP). (منذ لينكس 2.6.9، يمكن أن يحدث هذا الخطأ أيضًا إذا كان \fBRLIMIT_MEMLOCK\fP هو 0 والمستدعي غير مميز.) .SH الإصدارات يسمح لينكس لعملية بوصل (\fBshmat\fP(2)) مقطع ذاكرة مشتركة تم وضع علامة حذف عليه بالفعل باستخدام \fIshmctl(IPC_RMID)\fP. هذه الميزة غير متوفرة في تطبيقات UNIX الأخرى؛ يجب على التطبيقات المحمولة تجنب الاعتماد عليها. .SH المعايير POSIX.1\-2024. .SH التاريخ .\" SVr4 documents additional error conditions EINVAL, .\" ENOENT, ENOSPC, ENOMEM, EEXIST. Neither SVr4 nor SVID documents .\" an EIDRM error condition. POSIX.1\-2001، SVr4. .P تمت كتابة حقول مختلفة في \fIstruct\ shmid_ds\fP كنوع \fIshort\fP تحت لينكس 2.2 وأصبحت من النوع \fIlong\fP تحت لينكس 2.4. للاستفادة من هذا، يجب أن تكفي إعادة ترجمة تحت glibc\-2.1.91 أو أحدث. (تميز النواة بين الاستدعاءات القديمة والجديدة بواسطة علم \fBIPC_64\fP في \fIop\fP.) .SH ملاحظات يتم استخدام عمليات \fBIPC_INFO\fP و \fBSHM_STAT\fP و \fBSHM_INFO\fP بواسطة برنامج \fBipcs\fP(1) لتوفير معلومات حول الموارد المخصصة. في المستقبل، قد يتم تعديل هذه أو نقلها إلى واجهة نظام ملفات \fI/proc\fP. .SH "انظر أيضًا" \fBmlock\fP(2), \fBsetrlimit\fP(2), \fBshmget\fP(2), \fBshmop\fP(2), \fBcapabilities\fP(7), \fBsysvipc\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 .