Provided by: manpages-pl-dev_20051117-1_all bug

NAZWA

       setpgid, getpgid, setpgrp, getpgrp - pobranie/ustawienie grupy procesów

SKŁADNIA

       #include <unistd.h>

       int setpgid(pid_t pid, pid_t pgid);
       pid_t getpgid(pid_t pid);
       int setpgrp(void);
       pid_t getpgrp(void);

OPIS

       setpgid ustawia dla  procesu  określonego  przez  pid  numer  ID  grupy
       procesów  na  pgid.   Jśli  pid  jest  zerem,  to używany jest numer ID
       bieżącego procesu. Jeśli pgid jest zerem,  to  używany  jest  numer  ID
       procesu  dla procesu określonego przez pid.  Jeśli setpgid jest używane
       do przeniesienia procesu z jednej grupy procesów do innej (jak to robią
       niektóre  powłoki  podczas  tworzenia  potoków), to obie grupy procesów
       muszą należeć  do  tej  samej  sesji.  W  tym  przypadku  pgid  określa
       istniejącą  grupę  procesów,  do  której  zostanie przyłączony proces i
       numer sesji dla tej grupy musi  być  taki  sam,  jak  numer  sesji  dla
       przyłączanego procesu.

       getpgid  zwraca  numer  ID grupy procesów dla procesu określonego przez
       pid.  Jeśli pid jest zerem, to używany jest numer ID bieżącego procesu.

       Wywołanie setpgrp() jest równoważne setpgid(0,0).

       Podobnie  getpgrp()  jest  równoważne getpgid(0).  Każda grupa procesów
       należy do pewnej sesji i każdy proces należy do sesji, do której należy
       jego grupa procesów.

       Grupy   procesów   używane   są  do  rozprowadzania  sygnałów  oraz  do
       rozstrzygania przez terminale  żądań  dotyczących  danych  wejściowych:
       procesy,  które  należą  do  tej  samej  grupy procesów, co terminal są
       pierwszoplanowe  i  mogą  czytać,  podczas  gdy  pozostałe  procesy  są
       blokowane  sygnałem,  jeśli próbują czytać.  Te funkcje są więc używane
       przez  programy  takie,  jak  csh(1)  do  tworzenia  grup  procesów   w
       implementacji  sterowania  zadaniami.   Funkcje  TIOCGPGRP  i TIOCSPGRP
       opisane w termios(3) służą do pobierania/ustawiania grupy procesów  dla
       terminala sterującego.

       Jeśli  sesja  posiada  terminal  sterujący, nie jest ustawione CLOCAL i
       wystąpi  zawieszenie,  to  do  procesu  przewodzącego  sesji   wysyłany
       zostanie SIGHUP. Jeśli proces przewodzący sesji zakończy się, to sygnał
       SIGHUP  zostanie  wysłany  to  wszystkich  procesów   pierwszoplanowych
       należących do grupy procesów terminala sterującego.

       Jeśli  zakończenie  procesu  spowoduje,  że  grupa  procesów stanie się
       osierocona, a wszystkie procesy nowoosieroconej grupy będą  zatrzymane,
       to  do każdego z nich zostanie wysłany sygnał SIGHUP, po którym nastąpi
       wysłanie sygnału SIGCONT.

WARTOŚĆ ZWRACANA

       Po pomyślnym zakończeniu setpgid i setpgrp zwracają zero.  W  przypadku
       błędu zwracane jest -1 i odpowiednio ustawiane errno.

       getpgid  po  pomyślnym  zakończeniu zwraca grupę procesów.  W przypadku
       błędu zwracane jest -1 i odpowiednio ustawiane errno.

       getpgrp Zawsze zwraca aktualną grupę procesów.

BŁĘDY

       EINVAL pgid jest mniejsze niż 0 (setpgid, setpgrp).

       EACCES Nastąpiła próba zmiany identyfikatora grupy procesów dla jednego
              z procesów potomnych procesu wywołującego funkcję, zaś ów proces
              potomny wykonał już execve (setpgid, setpgrp).

       EPERM  Nastąpiła  próba  przeniesienia  procesu   do   grupy   procesów
              należącej  do innej sesji, lub próba zmiany identyfikatora grupy
              procesów dla jednego z procesów potomnych  procesu  wywołującego
              funkcję,  zaś ów proces potomny należy do innej sesji, lub próba
              zmiany  identyfikatora  grupy  procesów  dla   przywódcy   sesji
              (setpgid, setpgrp).

       ESRCH  Dla getpgid: nie ma procesu o numerze pid.  Dla setpgid: pid nie
              jest ani bieżącym procesem, ani potomkiem bieżącego procesu.

ZGODNE Z

       Funkcje setpgid  i  getpgrp  są  zgodne  z  POSIX.1.   Funkcja  setpgrp
       pochodzi z BSD 4.2.  Funkcja getpgid jest zgodna z SVr4.

UWAGI

       POSIX  oparł  funkcję  setpgid  na  funkcji  BSD setpgrp.  SysV również
       posiada funkcję o tej nazwie, ale funkcja ta jest tożsama z  setsid(2).

       Aby uzyskać prototypy tych funkcji pod glibc należy zdefiniować zarówno
       _XOPEN_SOURCE,  jak  i  _XOPEN_SOURCE_EXTENDED,   lub   użyć   "#define
       _XOPEN_SOURCE n", gdzie n jest pewną liczbą całkowitą większą lub równą
       500.

ZOBACZ TAKŻE

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