Provided by: manpages-ro-dev_4.27.0-1_all bug

NUME

       setpgid, getpgid, setpgrp, getpgrp - stabilește/obține grupul de procese

BIBLIOTECA

       Biblioteca C standard (libc, -lc)

SINOPSIS

       #include <unistd.h>

       int setpgid(pid_t pid, pid_t pgid);
       pid_t getpgid(pid_t pid);

       pid_t getpgrp(void);                            /* versiunea POSIX.1 */
       [[depreciat]] pid_t getpgrp(pid_t pid);        /* versiunea BSD */

       int setpgrp(void);                              /* versiunea System V */
       [[depreciat]] int setpgrp(pid_t pid, pid_t pgid);  /* versiunea BSD */

   Cerințe pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultați feature_test_macros(7)):

       getpgid():
           _XOPEN_SOURCE >= 500
               || /* Începând cu glibc 2.12: */ _POSIX_C_SOURCE >= 200809L

       setpgrp() (POSIX.1):
           _XOPEN_SOURCE >= 500
               || /* Începând cu glibc 2.19: */ _DEFAULT_SOURCE
               || /* glibc <= 2.19: */ _SVID_SOURCE

       setpgrp() (BSD), getpgrp() (BSD):
           [Acestea sunt disponibile doar înainte de glibc 2.19]
           _BSD_SOURCE &&
               ! (_POSIX_SOURCE || _POSIX_C_SOURCE || _XOPEN_SOURCE
                   || _GNU_SOURCE || _SVID_SOURCE)

DESCRIERE

       Toate  aceste  interfețe  sunt  disponibile  pe  Linux și sunt utilizate pentru a obține și stabili ID-ul
       grupului de procese (PGID) al unui proces. Modalitățile preferate, specificate  în  POSIX.1,  de  a  face
       acest  lucru  sunt:  getpgrp(void),  pentru  a  obține PGID-ul procesului apelant; și setpgid(), pentru a
       stabili PGID-ul unui proces.

       setpgid() stabilește PGID-ul procesului specificat de  pid  la  pgid.  Dacă  pid  este  zero,  atunci  se
       utilizează  ID-ul  de  proces  al  procesului  apelant.  Dacă  pgid  este zero, atunci PGID-ul procesului
       specificat de pid devine identic cu ID-ul său de proces. În cazul în care setpgid() este utilizat  pentru
       a  muta un proces dintr-un grup de procese în altul (așa cum fac unele shell-uri la crearea de conducte),
       ambele grupuri de  procese  trebuie  să  facă  parte  din  aceeași  sesiune  (a  se  vedea  setsid(2)  și
       credentials(7)).  În acest caz, pgid specifică un grup de procese existent la care urmează să se alăture,
       iar ID-ul de sesiune al acelui grup trebuie să corespundă cu ID-ul  de  sesiune  al  procesului  care  se
       alătură.

       Versiunea POSIX.1 a getpgrp(), care nu primește argumente, returnează PGID-ul procesului apelant.

       getpgid() returnează PGID-ul procesului specificat de pid.  În cazul în care pid este zero, se utilizează
       ID-ul  de  proces  al  procesului  apelant; (recuperarea PGID-ului unui proces, altul decât cel care face
       apelul, este rareori necesară, iar POSIX.1 getpgrp() este preferat pentru această sarcină).

       setpgrp() în stil System V, care nu primește argumente, este echivalent cu setpgid(0, 0).

       Apelul specific BSD setpgrp(), care primește argumentele pid și pgid, este o funcție  de  învăluire  care
       apelează

           setpgid(pid, pgid)

       Începând  cu  glibc  2.19,  funcția  setpgrp()  specifică BSD nu mai este expusă de <unistd.h>; apelurile
       trebuie înlocuite cu apelul setpgid() prezentat mai sus.

       Apelul specific BSD getpgrp(), care primește un singur argument pid, este o  funcție  de  învăluire  care
       apelează

           getpgid(pid)

       Începând  cu  glibc  2.19, funcția specifică BSD getpgrp() nu mai este expusă de <unistd.h>; apelurile ar
       trebui înlocuite cu apeluri la POSIX.1 getpgrp() care nu primește argumente  (dacă  intenția  este  de  a
       obține PGID-ul apelantului), sau cu apelul getpgid() prezentat mai sus.

VALOAREA RETURNATĂ

       În  caz  de  succes, setpgid() și setpgrp() returnează zero. În caz de eroare, se returnează -1, și errno
       este configurată pentru a indica eroarea.

       POSIX.1 getpgrp() returnează întotdeauna PGID-ul apelantului.

       getpgid() și getpgrp(), specific BSD, returnează un grup de procese în caz de succes. În caz  de  eroare,
       se returnează -1, iar errno este configurată pentru a indica eroarea.

ERORI-IEȘIRE

       EACCES S-a  încercat  modificarea  ID-ului  grupului  de  procese  al  unuia  dintre  procesele-copil ale
              procesului apelant, iar procesul-copil a efectuat deja un execve(2) (setpgid(), setpgrp()).

       EINVAL pgid este mai mic decât 0 (setpgid(), setpgrp()).

       EPERM  S-a încercat mutarea unui proces într-un grup de procese dintr-o sesiune diferită sau  modificarea
              ID-ului  grupului  de  procese  al  unuia  dintre  procesele-copil  ale  procesului  apelant,  iar
              procesul-copil se afla într-o sesiune diferită, sau modificarea ID-ului  grupului  de  procese  al
              unui lider de sesiune (setpgid(), setpgrp()).

       EPERM  Grupul de procese țintă nu există. (setpgid(), setpgrp()).

       ESRCH  Pentru  getpgid():  pid  nu se potrivește cu niciun proces. Pentru setpgid(): pid nu este procesul
              apelant și nu este un copil al procesului apelant.

STANDARDE

       getpgid()
       setpgid()
       getpgrp() (fără argumente)
       setpgrp() (ără argumente)
              POSIX.1-2008 (dar vedeți secțiunea ISTORIC).

       setpgrp() (2 argumente)
       getpgrp() (1 argument)
              Niciunul.

ISTORIC

       getpgid()
       setpgid()
       getpgrp() (fără argumente)
              POSIX.1-2001.

       setpgrp() (ără argumente)
              POSIX.1-2001. POSIX.1-2008 îl marchează ca obsolet.

       setpgrp() (2 argumente)
       getpgrp() (1 argument)
              4.2BSD.

NOTE

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

       Fiecare  grup de procese este membru al unei sesiuni, iar fiecare proces este membru al sesiunii din care
       face parte grupul său de procese; (a se vedea credentials(7)).

       O sesiune poate avea un terminal de control. În orice moment, unul (și numai unul)  dintre  grupurile  de
       procese din sesiune poate fi grupul de procese de prim-plan pentru terminal; celelalte grupuri de procese
       sunt  în  fundal.  În  cazul  în  care un semnal este generat de terminal (de exemplu, tastarea tastei de
       întrerupere pentru a genera  SIGINT),  semnalul  respectiv  este  trimis  către  grupul  de  procese  din
       prim-plan; (a se vedea termios(3) pentru o descriere a caracterelor care generează semnale). Numai grupul
       de procese din prim-plan poate citi „read(2)” de pe terminal; dacă un grup de procese din fundal încearcă
       să  citească  „read(2)” de la terminal, atunci grupului i se trimite un semnal SIGTTIN, care îl suspendă.
       Funcțiile tcgetpgrp(3) și tcsetpgrp(3) sunt utilizate  pentru  a  obține/stabili  grupul  de  procese  în
       prim-plan al terminalului de control.

       Apelurile  setpgid()  și  getpgrp() sunt utilizate de programe cum ar fi bash(1) pentru a crea grupuri de
       procese pentru a implementa controlul lucrărilor de shell.

       În cazul în care terminarea unui proces face ca un grup de procese să devină orfan și dacă  orice  membru
       al grupului de procese devenit orfan este oprit, atunci un semnal SIGHUP urmat de un semnal SIGCONT va fi
       trimis fiecărui proces din grupul de procese devenit orfan. Un grup de procese orfan este un grup în care
       părintele  fiecărui  membru  al grupului de procese este fie el însuși membru al grupului de procese, fie
       este membru al unui grup de procese într-o sesiune diferită (a se vedea, de asemenea, credentials(7)).

CONSULTAȚI ȘI

       getuid(2), setsid(2), tcgetpgrp(3), tcsetpgrp(3), termios(3), credentials(7)

TRADUCERE

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

       Această  traducere  este  documentație  gratuită;  citiți  Licența publică generală GNU Versiunea 3 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.

Pagini de manual de Linux 6.9.1                    2 mai 2024                                         setpgid(2)