.\" -*- coding: UTF-8 -*- .\" Copyright 1993, Thomas Koenig .\" Copyright 2004, Michael Kerrisk .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH wait 2 "8 lutego 2026 r." "Linux man\-pages 6.18" .SH NAZWA wait, waitpid, waitid \- oczekuje na zmianę stanu procesu .SH BIBLIOTEKA Standardowa biblioteka C (\fIlibc\fP,\ \fI\-lc\fP) .SH SKŁADNIA .nf \fB#include \fP .P \fBpid_t wait(int *_Nullable \fP\fIwstatus\fP\fB);\fP \fBpid_t waitpid(pid_t \fP\fIpid\fP\fB, int *_Nullable \fP\fIwstatus\fP\fB, int \fP\fIoptions\fP\fB);\fP .P \fBint waitid(idtype_t \fP\fIidtype\fP\fB, id_t \fP\fIid\fP\fB, siginfo_t *\fP\fIinfop\fP\fB, int \fP\fIoptions\fP\fB);\fP /* Jest to interfejs glibc i POSIX; zob. WERSJE, aby uzyskać informacje o surowym wywołaniu systemowym. */ .fi .P .RS -4 Wymagane ustawienia makr biblioteki glibc (patrz \fBfeature_test_macros\fP(7)): .RE .P \fBwaitid\fP(): .nf .\" (_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED) Od glibc 2.26: _XOPEN_SOURCE >= 500 || _POSIX_C_SOURCE >= 200809L glibc 2.25 i wcześniejsze: _XOPEN_SOURCE || /* Od glibc 2.12: */ _POSIX_C_SOURCE >= 200809L || /* glibc <= 2.19: */ _BSD_SOURCE .fi .SH OPIS Wszystkie te wywołania systemowe służą do oczekiwania na zmianę statusu potomka procesu wywołującego oraz do uzyskania informacji o potomku, którego stan uległ zmianie. Za zmianę stanu uważa się: zakończenie potomka, zatrzymanie potomka przez sygnał, wznowienie potomka przez sygnał. W przypadku zakończonego potomka, wykonanie oczekiwania pozwala systemowi na zwolnienie zasobów związanych z potomkiem; gdyby oczekiwanie nie zostało wykonane, to potomek pozostałby w stanie \[Bq]zombie\[rq] (zob. UWAGI poniżej). .P Jeśli stan potomka już uległ zmianie, to te wywołania niezwłocznie powrócą. W przeciwnym przypadku zablokują, do momentu zmiany stanu potomka lub przerwania wywołania przez procedurę obsługi sygnału (zakładając, że wywołania systemowe nie są automatycznie uruchamiane ponownie ze względu na znacznik \fBSA_RESTART\fP \fBsigaction\fP(2)). W pozostałej części niniejszego podręcznika, potomek, którego stan uległ zmianie, ale na którego jeszcze nie poczekano za pomocą opisywanych wywołań systemowych, będzie określany terminem \fIoczekiwalnego\fP. .SS "wait() i waitpid()" Wywołanie systemowe \fBwait\fP() wstrzymuje wykonanie wątku wywołującego, dopóki nie zakończy się jeden z jego potomków. Wywołanie \fIwait(&wstatus)\fP jest równoważne: .P .in +4n .EX waitpid(\-1, &wstatus, 0); .EE .in .P Wywołanie systemowe \fBwaitpid\fP() wstrzymuje wykonanie wątku wywołującego, dopóki potomek określony argumentem \fIpid\fP nie zmieni stanu. Domyślnie, \fBwaitpid\fP() czeka jedynie na zatrzymanie potomka, lecz to zachowanie można zmienić argumentem \fIoptions\fP, jak opisano niżej. .P Wartość \fIpid\fP może wynosić: .TP < \fB\-1\fP oznacza oczekiwanie na dowolnego potomka, którego identyfikator grupy procesów jest równy modułowi wartości (wartości bezwzględnej) \fIpid\fP. .TP \fB\-1\fP oznacza oczekiwanie na dowolnego potomka. .TP \fB0\fP oznacza oczekiwanie na dowolnego potomka, którego identyfikator grupy procesów jest równy identyfikatorowi procesu wołającego, w momencie wywołania \fBwaitpid\fP(). .TP > \fB0\fP oznacza oczekiwanie na potomka, którego PID jest równy wartości \fIpid\fP. .P Wartość \fIoptions\fP jest sumą (OR) zera lub więcej spośród następujących stałych: .TP \fBWNOHANG\fP oznacza natychmiastowy powrót z funkcji, jeśli potomek nie zakończył pracy. .TP \fBWUNTRACED\fP powraca również, jeśli potomek został zatrzymany (lecz nie śledzony za pomocą \fBptrace\fP(2)). Status potomków \fIśledzonych\fP, które są zatrzymane jest zapewniany nawet gdy nie podano tej opcji. .TP \fBWCONTINUED\fP (od Linuksa 2.6.10) powraca również, jeśli zatrzymany potomek został wznowiony sygnałem \fBSIGCONT\fP. .P (Poniższe opcje dotyczą wyłącznie Linuksa.) .P Jeśli \fIwstatus\fP nie wynosi NULL, to \fBwait\fP() i \fBwaitpid\fP() przechowują informacje o statusie w \fIint\fP, na którą on wskazuje. Liczbę tę można sprawdzić następującymi makrami (które jako argument przyjmują nie wskaźnik do niej, jak czynią to \fBwait\fP() i \fBwaitpid\fP(), lecz samą liczbę!): .TP \fBWIFEXITED(\fP\fIwstatus\fP\fB)\fP zwraca prawdę, jeśli potomek zakończył się w sposób normalny tj. wywołując \fBexit\fP(3) lub \fB_exit\fP(2) albo powracając z main(). .TP \fBWEXITSTATUS(\fP\fIwstatus\fP\fB)\fP zwraca status zakończenia potomka. Składa się on z ośmiu najmniej znaczących bitów argumentu \fIstatus\fP, które potomek podał w wywołaniu do \fBexit\fP(3) lub \fB_exit\fP(2) albo argumentu powrotnego z main(). Makro to może być przetwarzane tylko jeśli \fBWIFEXITED\fP zwróciło prawdę. .TP \fBWIFSIGNALED(\fP\fIwstatus\fP\fB)\fP zwraca prawdę, jeśli potomek został zakończony sygnałem. .TP \fBWTERMSIG(\fP\fIwstatus\fP\fB)\fP zwraca numer sygnału, który spowodował zakończenie procesu potomnego. Makro to powinno być używane tylko po zwróceniu prawdy przez \fBWIFSIGNALED\fP. .TP \fBWCOREDUMP(\fP\fIwstatus\fP\fB)\fP\fI \fP\f[R]// POSIX.1\-2024\fR zwraca prawdę, jeśli potomek dokonał zrzutu pamięci (zob. \fBcore\fP(5)). Makra tego należy używać tylko wówczas, gdy \fBWIFSIGNALED\fP zwróciło prawdę. .TP \fBWIFSTOPPED(\fP\fIwstatus\fP\fB)\fP\fI \fP\f[R]// POSIX.1\-2024\fR zwraca prawdę, jeśli proces potomny został zatrzymany po dostarczeniu sygnału; jest to możliwe tylko jeśli wywołanie wykonano z użyciem \fBWUNTRACED\fP lub gdy potomek jest śledzony (zob. \fBptrace\fP(2)). .TP \fBWSTOPSIG(\fP\fIwstatus\fP\fB)\fP zwraca numer sygnału, który spowodował zatrzymanie potomka. Makro to może być użyte tylko, gdy \fBWIFSTOPPED\fP zwróciło prawdę. .TP \fBWIFCONTINUED(\fP\fIwstatus\fP\fB)\fP (od Linuksa 2.6.10) zwraca prawdę, jeśli proces potomny został wznowiony, ze względu na otrzymanie \fBSIGCONT\fP. .SS waitid() Wywołanie systemowe \fBwaitid\fP() (dostępne od Linuksa 2.6.9) udostępnia precyzyjniejszą kontrolę nad stanem potomka, na którego się czeka. .P Argumenty \fIidtype\fP i \fIid\fP wybierają potomka (potomków), na którego się oczekuje, jak poniżej: .TP \fIidtype\fP == \f[B]P_PID\fR Oczekuje na potomka, którego PID jest równy \fIid\fP. .TP \fIidtype\fP == \f[B]P_PIDFD\fR (od Linuksa 5.4) .\" commit 3695eae5fee0605f316fbaad0b9e3de791d7dfaf Oczekuje na potomka, do którego odnosi się deskryptor pliku PID podany w \fIid\fP (więcej informacji o deskryptorach pliku PID w podręczniku \fBpidfd_open\fP(2)). .TP \fIidtype\fP == \f[B]P_PGID\fR .\" commit 821cc7b0b205c0df64cce59aacc330af251fa8f7 Oczekuje na dowolnego potomka, którego identyfikator grupy jest równy \fIid\fP. Od Linuksa 5.4, jeśli \fIid\fP wynosi zero, to oczekuje na dowolnego potomka z tej samej grupy procesów, co grupa procesu wywołującego w momencie wywołania. .TP \fIidtype\fP == \f[B]P_ALL\fR Oczekuje na dowolnego potomka; \fIid\fP jest ignorowane. .P Zmianę statusu potomka, na którego się oczekuje, podaje się za pomocą sumy (OR) jednego lub kilku poniższych znaczników w \fIoptions\fP: .TP \fBWEXITED\fP Oczekuje na potomka, który został zakończony. .TP \fBWSTOPPED\fP Oczekuje na potomka, który został zakończony za pomocą dostarczenia sygnału. .TP \fBWCONTINUED\fP Oczekuje na (poprzednio zatrzymanego) potomka, który został wznowiony sygnałem \fBSIGCONT\fP. .P Ponadto, w \fIoptions\fP można zsumować poniższe znaczniki: .TP \fBWNOHANG\fP Tak jak w \fBwaitpid\fP(). .TP \fBWNOWAIT\fP Pozostawia potomka w stanie oczekiwalnym; późniejszym wywołaniem oczekiwania można następnie pobrać informacje o stanie potomka. .P Po pomyślnym powrocie, \fBwaitid\fP() uzupełnia następujące pola struktury \fIsiginfo_t\fP, na którą wskazuje \fIinfop\fP: .TP \fIsi_pid\fP Identyfikator procesu potomnego. .TP \fIsi_uid\fP Rzeczywisty identyfikator użytkownika potomka (pole to nie jest ustawione w większości innych implementacji). .TP \fIsi_signo\fP Zawsze ustawione na \fBSIGCHLD\fP. .TP \fIsi_status\fP Status zakończenia potomka, taki jak podany do \fB_exit\fP(2) (lub \fBexit\fP(3)) lub sygnał powodujący zakończenie, zatrzymanie lub kontynuowanie potomka. Pole \fIsi_code\fP może posłużyć do określenia sposobu interpretacji tego pola. .TP \fIsi_code\fP Ustawione na jeden z: \fBCLD_EXITED\fP (potomek wywołał \fB_exit\fP(2)); \fBCLD_KILLED\fP (potomek zabity sygnałem); \fBCLD_DUMPED\fP (potomek zabity sygnałem, zrzucił pamięć); \fBCLD_STOPPED\fP (potomek zatrzymany sygnałem); \fBCLD_TRAPPED\fP (śledzony potomek wyzwolił pułapkę) lub \fBCLD_CONTINUED\fP (potomek kontynuował po otrzymaniu \fBSIGCONT\fP). .P Jeśli w \fIoptions\fP podano \fBWNOHANG\fP i nie było potomków w stanie oczekiwalnym, to \fBwaitid\fP() zwróci bezzwłocznie 0, natomiast stan struktury \fIsiginfo_t\fP, na którą wskazuje \fIinfop\fP zależy od implementacji. Aby (w sposób przenośny) rozróżnić ten przypadek od sytuacji, gdy potomek był w stanie oczekiwalnym, należy wyzerować pole \fIsi_pid\fP przed wywołaniem i sprawdzić, czy wartość pola jest niezerowa, po powrocie wywołania. .P .\" POSIX.1-2001 leaves this possibility unspecified; most .\" implementations (including Linux) zero out the structure .\" in this case, but at least one implementation (AIX 5.1) .\" does not -- MTK Nov 04 POSIX.1\-2008 Technical Corrigendum 1 (2013) dodaje wymaganie, że gdy w \fIoptions\fP podano \fBWNOHANG\fP i nie było potomków w stanie oczekiwalnym, to \fBwaitid\fP() powinno wyzerować pola \fIsi_pid\fP i \fIsi_signo\fP struktury. W Linuksie i innych implementacjach, które przestrzegają tego wymagania, nie ma potrzeby zerowania pola \fIsi_pid\fP, przed wywołaniem \fBwaitid\fP(). Obecnie, nie wszystkie implementacje przestrzegają jednak tego wymagania POSIX.1. .SH "WARTOŚĆ ZWRACANA" \fBwait\fP(): po pomyślnym zakończeniu zwraca identyfikator procesu zakończonego potomka, w razie błędu zwraca \-1. .P \fBwaitpid\fP(): po pomyślnym zakończeniu, zwraca identyfikator procesu, którego stan uległ zmianie; jeśli podano \fBWNOHANG\fP i jeden lub więcej z potomków podanych w \fIpid\fP istnieje, lecz nie zmienił jeszcze stanu, zwracane jest 0. W przypadku niepowodzenia, zwracane jest \-1. .P .\" FIXME As reported by Vegard Nossum, if infop is NULL, then waitid() .\" returns the PID of the child. Either this is a bug, or it is intended .\" behavior that needs to be documented. See my Jan 2009 LKML mail .\" "waitid() return value strangeness when infop is NULL". \fBwaitid\fP(): zwraca 0 po pomyślnym zakończeniu lub gdy podano \fBWNOHANG\fP i żaden z potomków podanych w \fIid\fP nie zmienił jeszcze stanu; w przypadku błędu zwracane jest \-1. .P W przypadku niepowodzenia, wszystkie wywołania ustawiają \fIerrno\fP, wskazując błąd. .SH BŁĘDY .TP \fBEAGAIN\fP Deskryptor pliku PID podany w \fIid\fP jest nieblokujący, a proces do którego się odnosi nie zakończył się. .TP \fBECHILD\fP (dla \fBwait\fP()) Proces wywołujący nie ma żadnych potomków, na których jeszcze się nie czeka. .TP \fBECHILD\fP (dla \fBwaitpid\fP() lub \fBwaitid\fP()) Proces o zadanym \fIpid\fP (\fBwaitpid\fP()) lub \fIidtype\fP i \fIid\fP (\fBwaitid\fP()) nie istnieje lub nie jest potomkiem procesu wywołującego (może się to zdarzyć również w przypadku potomka, który ustawił akcję obsługi sygnału \fBSIGCHLD\fP na \fBSIG_IGN\fP; zob. także: wątki w rozdziale \fIUwagi\ linuksowe\fP). .TP \fBEINTR\fP Nie ustawiono \fBWNOHANG\fP, a został przechwycony niezablokowany sygnał lub \fBSIGCHLD\fP; zob. \fBsignal\fP(7). .TP \fBEINVAL\fP Argument \fIoptions\fP był niepoprawny. .TP \fBESRCH\fP (dla \fBwait\fP() lub \fBwaitpid\fP()) \fIpid\fP jest równe \fBINT_MIN\fP. .SH WERSJE .SS "Różnice biblioteki C/jądra" \fBwait\fP() jest w rzeczywistością funkcją biblioteczną, która (w glibc) jest zaimplementowana jako wywołanie do \fBwait4\fP(2). .P .\" e.g., i386 has the system call, but not x86-64 Na niektórych architekturach, nie ma wywołania systemowego \fBwaitpid\fP(); zamiast tego interfejs ten jest zaimplementowany jako opakowująca funkcja biblioteki C, która wywołuje \fBwait4\fP(2). .P Surowe wywołanie systemowe \fBwaitid\fP() przyjmuje piąty argument, typu \fIstruct rusage\ *\fP. Jeśli argument ten nie wynosi NULL, to jest używany do zwrócenia informacji o użyciu zasobów potomka, w ten sam sposób jak \fBwait4\fP(2). Więcej szczegółów w podręczniku \fBgetrusage\fP(2). .SH STANDARDY POSIX.1\-2024. .SH HISTORIA SVr4, 4.3BSD, POSIX.1\-2001. .SH UWAGI Potomek który się zakończy, ale na którego nie oczekiwano staje się \[Bq]zombie\[rq]. Jądro przechowuje minimalny zbiór informacji o procesach zombie (PID, status zakończenia, informacje o użyciu zasobów), aby pozwolić później procesowi macierzystemu na wykonanie oczekiwania, aby pozyskać informacje o potomku. Dopóki zombie nie zostanie usunięty z systemu poprzez oczekiwanie, będzie zajmował miejsce w tablicy procesów jądra, a jeśli ta tablica się wypełni, nie będzie można tworzyć nowych procesów. Jeśli proces macierzysty zakończy się, to ewentualni potomkowie \[Bq]zombie\[rq], zostaną zaadoptowani przez \fBinit\fP(1), (lub przez najbliższy proces dorzynający (ang. subreaper), według definicji użycia operacji \fBPR_SET_CHILD_SUBREAPER\fP \fBprctl\fP(2)); \fBinit\fP(1) automatycznie wykona odczekanie, w celu usunięcia zombie. .P POSIX.1\-2001 określa, że jeśli jako dyspozycję sygnału \fBSIGCHLD\fP ustawiono na \fBSIG_IGN\fP lub dla \fBSIGCHLD\fP ustawiono znacznik \fBSA_NOCLDWAIT\fP (zob. \fBsigaction\fP(2)), to kończony potomek nie staje się zombie, a wywołanie \fBwait\fP() lub \fBwaitpid\fP() zablokuje, dopóki wszyscy potomkowie nie zakończą się, a następnie zawiedzie z \fIerrno\fP ustawionym na \fBECHILD\fP. (Pierwotny standard POSIX pozostawiał zachowanie ustawienia \fBSIGCHLD\fP na \fBSIG_IGN\fP nieokreślonym. Proszę zauważyć, że choć domyślną dyspozycją \fBSIGCHLD\fP jest \[Bq]ignorowanie\[rq], to wyraźne ustawienie dyspozycji na \fBSIG_IGN\fP daje inne zachowanie w stosunku do potomków procesu zombie). .P Linux 2.6 jest zgodny z wymaganiami POSIX. Jednak Linux 2.4 (i wcześniejsze) nie są: jeśli wywołanie \fBwait\fP() lub \fBwaitpid\fP() jest wykonywane z ignorowaniem \fBSIGCHLD\fP, zachowuje się ono tak, jakby \fBSIGCHLD\fP nie były ignorowane, to znaczy, wywołanie zostaje zablokowane do chwili zakończenia następnego potomka, a następnie zwraca identyfikator procesu i status tego potomka. .SS "Uwagi linuksowe" Pod Linuksem, wątek zarządzany przez jądro nie jest uruchamiany inaczej niż zwykły proces. Zamiast tego wątek jest po prostu procesem stworzonym przez wywołanie dostępnej tylko pod Linuksem funkcji systemowej \fBclone\fP(2). Inne funkcje, jak na przykład przenośne \fBpthread_create\fP(3) są zaimplementowane przez wywołania funkcji \fBclone\fP(2). W wersjach Linuksa poprzedzających 2.4, wątek był po prostu specyficznym przypadkiem procesu. W związku z tym nie mógł on czekać na potomków innego wątku nawet w przypadku, gdy ten drugi wątek należał do tej samej grupy wątków. Jednakże, POSIX zaleca taką funkcjonalność, więc począwszy od Linuksa 2.4 wątek może (i domyślnie będzie) czekać na potomków innych wątków należących do tej samej grupy wątków. .P .\" commit 91c4e8ea8f05916df0c8a6f383508ac7c9e10dba Następujące, specyficzne dla Linuksa opcje w \fIoptions\fP są przeznaczone dla potomków utworzonych za pomocą \fBclone\fP(2); mogą być one również, od Linuksa 4.7, używane z \fBwaitid\fP(): .TP \fB__WCLONE\fP .\" since 0.99pl10 Oczekuje tylko na potomków typu \[Bq]clone\[rq]. Jeśli opcja ta zostanie pominięta oczekiwanie będzie występować tylko na potomków typu \[Bq]nie\-clone\[rq]. (Potomek typu \[Bq]clone\[rq] to taki, który po zakończeniu nie dostarcza swojemu procesowi macierzystemu sygnału lub dostarcza sygnał inny niż \fBSIGCHLD\fP.) Opcja ta jest ignorowana, jeśli ustawiona jest również opcja \fB__WALL\fP. .TP \fB__WALL\fP (od Linuksa 2.4) .\" since patch-2.3.48 Oczekuje na procesy potomne niezależnie od ich typu (\[Bq]clone\[rq] lub \[Bq]non\-clone\[rq]). .TP \fB__WNOTHREAD\fP (od Linuksa 2.4) .\" since patch-2.4.0-test8 Nie oczekuje na procesy potomne innych wątków w obrębie tej samej grupy wątków. Było to w Linuksie domyślne przed wersją 2.4. .P .\" commit bf959931ddb88c4e4366e96dd22e68fa0db9527c .\" prevents cases where an unreapable zombie is created if .\" /sbin/init doesn't use __WALL. Od Linuksa 4.7, znacznik \fB__WALL\fP jest automatycznie dorozumiany, gdy potomek jest śledzony (ptraced). .SH USTERKI Zgodnie z POSIX.1\-2008, aplikacje wywołujące \fBwaitid\fP() muszą upewnić się, że \fIinfop\fP wskazuje na strukturę \fIsiginfo_t\fP (tj. jest nie to pusty wskaźnik). W Linuksie, jeśli \fIinfop\fP wynosi NULL, to \fBwaitid\fP() kończy się powodzeniem, zwracając identyfikator procesu oczekiwanego potomka. Aplikacje powinny unikać polegania na tym niespójnym, niestandardowym i niepotrzebnym zachowaniu. .SH PRZYKŁADY .\" fork.2 refers to this example program. Poniższy program demonstruje użycie \fBfork\fP(2) i \fBwaitpid\fP(). Program tworzy proces potomny. Jeśli nie poda się argumentów wiersza poleceń, potomek zawiesza swoje wykonanie za pomocą \fBpause\fP(2), aby pozwolić użytkownikowi wysyłać sygnały do potomka. W przeciwnym przypadku, gdy poda się argumenty wiersza poleceń, potomek bezzwłocznie wychodzi, używając liczby podanej w wierszu polecenia jako statusu zakończenia. Proces macierzysty wykonuje pętlę monitorującą potomka za pomocą \fBwaitpid\fP() i używa makr W*() opisanych powyżej, do analizy wartości statusu oczekiwania. .P Poniższa sesja powłoki demonstruje użycie programu: .P .in +4n .EX $\fB ./a.out &\fP PID potomka to 32360 [1] 32359 $\fB kill \-STOP 32360\fP zatrzymany sygnałem 19 $\fB kill \-CONT 32360\fP wznowiony $\fB kill \-TERM 32360\fP zabity sygnałem 15 [1]+ Zakończony ./a.out $ .EE .in .SS "Kod źródłowy programu" .\" SRC BEGIN (wait.c) \& .EX #include #include #include #include #include #include \& int main(int argc, char *argv[]) { int wstatus; pid_t cpid, w; \& cpid = fork(); if (cpid == \-1) { perror("fork"); exit(EXIT_FAILURE); } \& if (cpid == 0) { /* Kod wykonywany przez potomka */ printf("PID potomka to %jd\[rs]n", (intmax_t) getpid()); if (argc == 1) pause(); /* Oczekiwanie na sygnały */ _exit(atoi(argv[1])); \& } else { /* Kod wykonywany przez rodzica */ do { w = waitpid(cpid, &wstatus, WUNTRACED | WCONTINUED); if (w == \-1) { perror("waitpid"); exit(EXIT_FAILURE); } \& if (WIFEXITED(wstatus)) { printf("wyszedł, status=%d\[rs]n", WEXITSTATUS(wstatus)); } else if (WIFSIGNALED(wstatus)) { printf("zabity sygnałem %d\[rs]n", WTERMSIG(wstatus)); } else if (WIFSTOPPED(wstatus)) { printf("zatrzymany sygnałem %d\[rs]n", WSTOPSIG(wstatus)); } else if (WIFCONTINUED(wstatus)) { printf("wznowiony\[rs]n"); } } while (!WIFEXITED(wstatus) && !WIFSIGNALED(wstatus)); exit(EXIT_SUCCESS); } } .EE .\" SRC END .SH "ZOBACZ TAKŻE" \fB_exit\fP(2), \fBclone\fP(2), \fBfork\fP(2), \fBkill\fP(2), \fBptrace\fP(2), \fBsigaction\fP(2), \fBsignal\fP(2), \fBwait4\fP(2), \fBpthread_create\fP(3), \fBcore\fP(5), \fBcredentials\fP(7), \fBsignal\fP(7) .PP .SH TŁUMACZENIE Tłumaczenie niniejszej strony podręcznika: Przemek Borys , Andrzej Krzysztofowicz i Michał Kułach . .PP Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License w wersji 3 .UE lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI. .PP Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej .MT manpages-pl-list@lists.sourceforge.net .ME .