Scroll to navigation

personality(2) System Calls Manual personality(2)

الاسم

personality - ضبط نطاق تنفيذ العملية

المكتبة

مكتبة سي المعيارية (libc، -lc)

موجز

#include <sys/personality.h>
int personality(unsigned long persona);

الوصف

يدعم لينكس نطاقات تنفيذ مختلفة، أو شخصيات، لكل عملية. من بين أمور أخرى، تخبر نطاقات التنفيذ لينكس كيفية تعيين أرقام الإشارات إلى إجراءات الإشارات. يسمح نظام نطاق التنفيذ للينكس بتوفير دعم محدود للملفات الثنائية المترجمة تحت أنظمة تشغيل شبيهة بيونكس أخرى.

إذا لم يكن persona يساوي 0xffffffff، فإن personality() يضبط نطاق تنفيذ المتصل إلى القيمة المحددة بواسطة persona. تحديد persona كـ 0xffffffff يوفر طريقة لاسترجاع الشخصية الحالية دون تغييرها.

يمكن العثور على قائمة نطاقات التنفيذ المتاحة في <sys/personality.h>. نطاق التنفيذ هو قيمة 32 بت حيث تُخصص البايتات الثلاث العليا للأعلام التي تجعل النواة تعدل سلوك استدعاءات نظام معينة لمحاكاة الخصائص التاريخية أو المعمارية. البايت الأقل أهمية هو قيمة تحدد الشخصية التي يجب أن تفترضها النواة. قيم الأعلام هي كما يلي:

مع ضبط هذا العلم، توفير تخطيط مساحة عنوان افتراضية قديم.
مع ضبط هذا العلم، تعطيل العشوائية في تخطيط مساحة العنوان.
تحديد مساحة العنوان إلى 32 بت.
مع ضبط هذا العلم، استخدام 0xc0000000 كالإزاحة التي يُبحث عندها عن قطعة ذاكرة افتراضية في mmap(2)؛ وإلا استخدام 0xffffe000. ينطبق فقط على عمليات x86 ذات 32 بت.
مؤشرات الدوال في مساحة المستخدم لمعالجات الإشارات تشير إلى واصفات. ينطبق فقط على ARM إذا كان BINFMT_ELF_FDPIC و SuperH.
وصل الصفحة 0 كقراءة فقط (لدعم الملفات الثنائية التي تعتمد على هذا السلوك SVr4).
مع ضبط هذا العلم، PROT_READ يستلزم PROT_EXEC لـ mmap(2).
لا تأثير.
مع ضبط هذا العلم، select(2) و pselect(2) و ppoll(2) لا تعدل وسيطة المهلة المُعادة عند المقاطعة بواسطة معالج إشارة.
جعل uname(2) يبلغ عن رقم إصدار 2.6.(40+x) بدلاً من رقم إصدار MAJOR.x. أُضيف كإجراء مؤقت لدعم التطبيقات المعطلة التي لم تستطع التعامل مع تبديل ترقيم إصدار النواة من لينكس 2.6.x إلى لينكس 3.x.
لا تأثير.

نطاقات التنفيذ المتاحة هي:

BSD. (لا تأثيرات.)
دعم لـ HP/UX 32-بت. لم يكتمل هذا الدعم أبدًا، وأُسقط بحيث لا يكون لهذه القيمة أي تأثير منذ لينكس 4.0.
IRIX 5 32-بت. لم يعمل بكامل وظائفه أبدًا؛ أُسقط الدعم في لينكس 2.6.27. يستلزم STICKY_TIMEOUTS.
IRIX 6 64-بت. يستلزم STICKY_TIMEOUTS؛ وإلا فلا تأثير.
IRIX 6 جديد 32-بت. يستلزم STICKY_TIMEOUTS؛ وإلا فلا تأثير.
يستلزم STICKY_TIMEOUTS؛ وإلا فلا تأثير.
لينكس.
يُرجع uname(2) اسم المعمارية 32-بت في حقل machine ("i686" بدلاً من "x86_64"، إلخ.).
تحت ia64 (Itanium)، لا تُفرض علامة O_LARGEFILE open(2) على العمليات بهذه الشخصية.
تحت ARM 64-بت، يُحظر تعيين هذه الشخصية إذا كان execve(2) لعملية 32-بت محظورًا أيضًا (راجع معامل النواة allow_mismatched_32bit_el0 و Documentation/arm64/asymmetric-32bit.rst).
مثل PER_LINUX32، لكن يستلزم ADDR_LIMIT_3GB.
مثل PER_LINUX، لكن يستلزم ADDR_LIMIT_32BIT.
مثل PER_LINUX، لكن يستلزم FDPIC_FUNCPTRS.
OSF/1 v4. لا تأثير منذ لينكس 6.1، الذي أزال دعم الثنائيات a.out. سابقًا، على alpha، كان يمسح أعلى 32 بت من iov_len في مخزن المستخدم للتوافق مع الإصدارات القديمة من OSF/1 حيث عُرّف iov_len كـ int.
SCO OpenServer 5. يستلزم STICKY_TIMEOUTS و WHOLE_SECONDS؛ وإلا فلا تأثير.
Acorn RISC OS/Arthur (MIPS). لا تأثير. حتى لينكس 4.0، كان يعيّن الجذر البديل للمحاكاة إلى /usr/gnemul/riscos (راجع PER_SUNOS، أدناه). قبل ذلك، حتى لينكس 2.6.3، مجرد محاكاة Arthur.
SCO UNIX System V Release 3. مثل PER_OSR5، لكن يستلزم أيضًا SHORT_INODE.
سولاريس. يستلزم STICKY_TIMEOUTS؛ وإلا فلا تأثير.
صن أو إس. مماثل لـ PER_BSD، لكن يستلزم STICKY_TIMEOUTS. قبل لينكس 2.6.26، حوّل عمليات بحث المكتبات والرابط الديناميكي إلى /usr/gnemul. معيب، غير مُصان إلى حد كبير، وغير مستخدم تقريبًا بالكامل.
إيه تي آند تي يونكس سيستم في الإصدار 3. يستلزم STICKY_TIMEOUTS و SHORT_INODE؛ وإلا فلا تأثير.
إيه تي آند تي يونكس سيستم في الإصدار 4. يستلزم STICKY_TIMEOUTS و MMAP_PAGE_ZERO؛ وإلا فلا تأثير.
يونيكس وير 7. يستلزم STICKY_TIMEOUTS و MMAP_PAGE_ZERO؛ وإلا فلا تأثير.
وايز يونكس سيستم في/386. يستلزم STICKY_TIMEOUTS و SHORT_INODE؛ وإلا فلا تأثير.
إكسينكس. يستلزم STICKY_TIMEOUTS و SHORT_INODE؛ وإلا فلا تأثير.

قيمة الإرجاع

عند النجاح، يُعاد persona السابق. عند الخطأ، يُعاد -1، ويُضبط errno للإشارة إلى الخطأ.

الأخطاء

تعذر على النواة تغيير الشخصية.

المعايير

لينكس.

التاريخ

لينكس 1.1.20، جليبتك 2.3.

انظر أيضًا

setarch(8)

ترجمة

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

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

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

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