setsid(2)

NUME
setsid - creează o sesiune și stabilește ID-ul grupului de procese

BIBLIOTECA
Biblioteca C standard (libc, -lc)

REZUMAT
#include <unistd.h>

pid_t setsid(void);

DESCRIERE
setsid() creează o sesiune nouă dacă procesul apelant nu este un lider de grup de procese. Procesul apelant este liderul noii sesiuni (adică ID-ul sesiunii sale este același cu ID-ul procesului său). De asemenea, procesul apelant devine liderul grupului de procese al unui nou grup de procese în cadrul sesiunii (de exemplu, ID-ul grupului de procese este același cu ID-ul său de proces).

Procesul de apelare va fi singurul proces din noul grup de procese și din noua sesiune.

Inițial, noua sesiune nu are un terminal de control. Pentru detalii privind modul în care o sesiune dobândește un terminal de control, a se vedea credentials(7).

VALOAREA RETURNATĂ
În caz de succes, se returnează ID-ul de sesiune (nou) al procesului apelant. În caz de eroare, se returnează (pid_t) -1, iar errno este configurată pentru a indica eroarea.

ERORI

EPERM
    ID-ul grupului de procese al oricărui proces este egal cu PID-ul procesului care îl apelează. Astfel, în special, setsid() eșuează dacă procesul apelant este deja un lider de grup de procese.

STANDARDE
POSIX.1-2001, POSIX.1-2008, SVr4.

NOTE
Un proces-copil creat prin fork(2) moștenește ID-ul de sesiune al părintelui său. ID-ul de sesiune este păstrat în cazul unui apel execve(2).

Un lider de grup de procese este un proces al cărui ID de grup de procese este egal cu PID-ul său. Interzicerea apelării setsid() de către un lider de grup de procese previne posibilitatea ca un lider de grup de procese să se plaseze într-o nouă sesiune, în timp ce alte procese din grupul de procese rămân în sesiunea inițială; un astfel de scenariu ar încălca ierarhia strictă pe două niveluri a sesiunilor și grupurilor de procese. Pentru a fi siguri că setsid() va reuși, apelați fork(2) și puneți părintele să apeleze _exit(2), în timp ce copilul (care, prin definiție, nu poate fi un lider de grup de procese) apelează setsid().

În cazul în care o sesiune are un terminal de control, iar fanionul CLOCAL pentru acel terminal nu este definit și se produce o închidere a terminalului, atunci conducătorului sesiunii i se trimite un semnal SIGHUP.

În cazul în care un proces care este lider de sesiune se termină, se trimite un semnal SIGHUP la fiecare proces din grupul de procese din prim-plan al terminalului de control.

CONSULTAȚI ȘI
setsid(1), getsid(2), setpgid(2), setpgrp(2), tcgetsid(3), credentials(7), sched(7)

TRADUCERE
Traducerea în limba română a acestui manual a fost creată de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 (https://www.gnu.org/licenses/gpl-3.0.html) sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă Nicio RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.