plucky (2) getpgrp.2.gz

Provided by: manpages-pl-dev_4.25.1-1_all bug

NAZWA

       setpgid, getpgid, setpgrp, getpgrp - pobiera/ustawia grupę procesów

BIBLIOTEKA

       Standardowa biblioteka C (libc, -lc)

SKŁADNIA

       #include <unistd.h>

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

       pid_t getpgrp(void);                            /* wersja POSIX.1 */
       [[deprecated]] pid_t getpgrp(pid_t pid);        /* wersja BSD */

       int setpgrp(void);                              /* wersja Systemu V */
       [[deprecated]] int setpgrp(pid_t pid, pid_t pgid);  /* wersja BSD */

   Wymagane ustawienia makr biblioteki glibc (patrz feature_test_macros(7)):

       getpgid():
           _XOPEN_SOURCE >= 500
               || /* Od glibc 2.12: */ _POSIX_C_SOURCE >= 200809L

       setpgrp() (POSIX.1):
           _XOPEN_SOURCE >= 500
               || /* Od glibc 2.19: */ _DEFAULT_SOURCE
               || /* glibc <= 2.19: */ _SVID_SOURCE

       setpgrp() (BSD), getpgrp() (BSD):
           [Poniższe są dostępne wyłącznie przed glibc 2.19]
           _BSD_SOURCE &&
               ! (_POSIX_SOURCE || _POSIX_C_SOURCE || _XOPEN_SOURCE
                   || _GNU_SOURCE || _SVID_SOURCE)

OPIS

       Wszystkie  te  interfejsy  są dostępne w Linuksie i służą do pobierania i ustawiania identyfikatora grupy
       procesu (process group ID — PGID). Preferowanymi, określonymi przez POSIX.1 sposobami  są:  getpgrp(void)
       do pobierania PGID procesu wywołującego oraz setpgid() do ustawiania PGID procesu.

       setpgid()  ustawia PGID procesu określonego przez pid na pgid. Jeśli pid jest zerem, to używany jest PGID
       procesu wywołującego. Jeśli pgid jest zerem, to PGID procesu określonego przez pid staje  się  taki  sam,
       jak  jego  identyfikator  procesu.  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 (zob. setsid(2) i credentials(7)). 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.

       Wersja POSIX.1 getpgrp(), która nie przyjmuje żadnych argumentów, zwraca PGID procesu wywołujacego.

       getpgid  zwraca  PGID  procesu określonego przez pid. Jeśli pid jest zerem, to używany jest identyfikator
       procesu, procesu wywołującego (pobieranie PGID procesu innego niż wywołujący jest rzadko potrzebne  i  do
       tego celu preferowany jest getpgrp() POSIX.1).

       Wywołanie setpgrp() w stylu Systemu V, które nie przyjmuje argumentów, jest równoważne setpgid(0, 0).

       Specyficzne  dla BSD wywołanie setpgrp(), które przyjmuje argumenty pid i pgid, jest funkcją opakowującą,
       która wywołuje

           setpgid(pid, pgid)

       Od glibc 2.19, specyficzna dla BSD funkcja setpgrp() nie jest już ujawniana przez  <unistd.h>;  wywołania
       powinny być zastąpione wywołaniem setpgid(), o którym mowa wyżej.

       Specyficzne  dla  BSD  wywołanie getpgrp(), które przyjmuje argument pid, jest funkcją opakowującą, która
       wywołuje

           getpgid(pid)

       Od glibc 2.19, specyficzna dla BSD funkcja getpgrp() nie jest już ujawniana przez  <unistd.h>;  wywołania
       powinny  być zastąpione wywołaniem getpgrp() POSIX.1, nieprzyjmującym argumentów (jeśli chce się pozyskać
       PGID wywołującego) lub wywołaniem getpgid(), o którym mowa wyżej.

WARTOŚĆ ZWRACANA

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

       getpgrp POSIX.1 zawsze zwraca PGID wywołującego.

       getpgid()  i  specyficzne dla BSD getpgrp() po pomyślnym zakończeniu zwracają grupę procesów. W przypadku
       błędu zwracane jest -1 i ustawiane errno wskazując błąd.

BŁĘDY

       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(2) (setpgid, setpgrp).

       EINVAL pgid jest mniejsze niż 0 (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()).

       EPERM  Docelowa grupa procesu nie istnieje.  (setpgid(), setpgrp()).

       ESRCH  Dla getpgid(): nie ma procesu o numerze pid. Dla setpgid(): pid nie jest ani procesem wywołującym,
              ani jego potomkiem.

STANDARDY

       getpgid()
       setpgid()
       getpgrp() (bez argumentów)
       setpgrp() (bez argumentów)
              POSIX.1-2008 (lecz zob. HISTORIA).

       setpgrp() (2 argumenty)
       getpgrp() (1 argument)
              Brak.

HISTORIA

       getpgid()
       setpgid()
       getpgrp() (bez argumentów)
              POSIX.1-2001.

       setpgrp() (bez argumentów)
              POSIX.1-2001.  POSIX.1-2008 oznacza je jako przestarzałe.

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

UWAGI

       Potomek  utworzony  przez fork(2) dziedziczy identyfikator grupy procesu od swojego rodzica. Wartość PGID
       jest także zachowywana podczas execve(2).

       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 (zob. credentials(7)).

       Sesja  może  mieć  terminal  kontrolujący. W każdym czasie jedna (i tylko jedna) z grup procesów w sesji,
       może być pierwszoplanową grupą procesu dla terminala; pozostałe grupy procesu są w tle. Jeśli z terminala
       wygenerowany  zostanie  sygnał  (np.  przez  wpisanie  klucza przerwania, generującego sygnał SIGINT), to
       sygnał ten trafia  to  pierwszoplanowej  grupy  procesu  (opis  znaków  generujących  sygnały  zawarto  w
       podręczniku  termios(3)).  Jedynie pierwszoplanowa grupa procesu może czytać (read(2)) z terminala, jeśli
       grupa procesu tła spróbuje dokonać odczytu (read(2)) z terminala, to do grupy  wysyłany  jest  sygnał  ją
       zawieszający  — SIGTTIN. Do pobierania/ustawiania pierwszoplanowej grupy procesu terminala kontrolującego
       służą funkcje tcgetpgrp(3) i tcsetpgrp(3).

       Wywołania setpgid() i getpgrp() są używane przez programy takie jak bash(1), do utworzenia grupy  procesu
       w celu zaimplementowania kontroli zadań powłoki.

       Jeśli  przerwanie  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. Osierocona grupa procesów to taka, w której rodzicem każdego członka
       grupy procesów jest również członek grupy procesów lub członek grupy procesów w  innej  sesji  (zob.  też
       credentials(7)).

ZOBACZ TAKŻE

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

TŁUMACZENIE

       Autorami    polskiego    tłumaczenia   niniejszej   strony   podręcznika   są:   Andrzej   Krzysztofowicz
       <ankry@green.mf.pg.gda.pl> i Michał Kułach <michal.kulach@gmail.com>

       Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje  o  warunkach  licencji  można  uzyskać
       zapoznając  się  z  GNU General Public License w wersji 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ lub
       nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

       Błędy w tłumaczeniu  strony  podręcznika  prosimy  zgłaszać  na  adres  listy  dyskusyjnej  ⟨manpages-pl-
       list@lists.sourceforge.net⟩.