setsid(2)

الاسم
setsid - ينشئ جلسة ويضبط معرف مجموعة العملية

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

موجز
#include <unistd.h>

pid_t setsid(void);

الوصف
تنشئ setsid() جلسة جديدة إذا لم تكن العملية المستدعية قائدة مجموعة عمليات. تصبح العملية المستدعية قائدة الجلسة الجديدة (أي يُجعل معرف جلستها مساوياً لمعرف عمليتها). كما تصبح العملية المستدعية قائدة مجموعة عمليات لمجموعة عمليات جديدة في الجلسة (أي يُجعل معرف مجموعة عملياتها مساوياً لمعرف عمليتها).

ستكون العملية المستدعية العملية الوحيدة في مجموعة العمليات الجديدة وفي الجلسة الجديدة.

بدائياً، لا تملك الجلسة الجديدة طرفية تحكم. للحصول على تفاصيل حول كيفية حصول الجلسة على طرفية تحكم، انظر credentials(7).

قيمة الإرجاع
عند النجاح، يُعاد معرف الجلسة (الجديد) للعملية المستدعية. عند الخطأ، يُعاد (pid_t) -1، ويُضبط errno للإشارة إلى الخطأ.

الأخطاء

EPERM
    معرف مجموعة العمليات لأي عملية يساوي PID للعملية المستدعية. وبالتالي، تفشل setsid() بشكل خاص إذا كانت العملية المستدعية بالفعل قائدة مجموعة عمليات.

المعايير
POSIX.1-2024.

التاريخ
POSIX.1-2001، SVr4.

ملاحظات
يرث طفل يُنشأ عبر fork(2) معرف جلسة والده. يُحافظ على معرف الجلسة عبر execve(2).

قائدة مجموعة العمليات هي عملية يكون معرف مجموعة عملياتها مساوياً لـ PID الخاص بها. يمنع منع قائدة مجموعة عمليات من استدعاء setsid() إمكانية وضع قائدة مجموعة عمليات نفسها في جلسة جديدة بينما تبقى عمليات أخرى في مجموعة العمليات في الجلسة الأصلية؛ مثل هذا السيناريو سيكسر التسلسل الهرمي الصارم ذو المستويين للجلسات ومجموعات العمليات. للتأكد من نجاح setsid()، استدع fork(2) واجعل الوالد يقوم بـ _exit(2)، بينما الطفل (الذي بحكم التعريف لا يمكن أن يكون قائدة مجموعة عمليات) يستدعي setsid().

إذا كانت الجلسة تملك طرفية تحكم، ولم يُضبط العلم CLOCAL لتلك الطرفية، وحدث قطع اتصال طرفية، فإنه يُرسل إشارة SIGHUP إلى قائد الجلسة.

إذا أنهت عملية تكون قائدة جلسة، فإنه يُرسل إشارة SIGHUP إلى كل عملية في مجموعة العمليات الأمامية للطرفية المتحكمة.

انظر أيضًا
setsid(1), getsid(2), setpgid(2), setpgrp(2), tcgetsid(3), credentials(7), sched(7)

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

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

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