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¶
 Uwaga! To tłumaczenie może być nieaktualne!
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)
Powyższe tłumaczenie pochodzi z nieistniejącego już Projektu
  Tłumaczenia Manuali i 
może nie być aktualne. W razie
  zauważenia różnic między powyższym opisem a
  rzeczywistym zachowaniem opisywanego programu lub funkcji, prosimy o
  zapoznanie się z oryginalną (angielską) wersją strony
  podręcznika za pomocą polecenia:
  
  - man --locale=C 2 setpgid
 
Prosimy o pomoc w aktualizacji stron man - więcej informacji można
  znaleźć pod adresem
  
http://sourceforge.net/projects/manpages-pl/.