setpgid

Autres langues

Langue: pl

Autres versions - même langue

Version: 2003-01-20 (openSuse - 09/10/07)

Section: 2 (Appels système)

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)