názov
počkajte, waitpid - čakajte na ukončenie procesu
synopse
#include pid_t wait (int * postavenie );pid_t waitpid (pid_t pid , int * postavenie , int možnosti );
počkať funkcia pozastaví vykonávanie aktuálneho procesu, kým dieťa nevystúpi, alebo kým nedôjde k vysielaniu signálu, ktorého zásahom je ukončiť aktuálny proces alebo zavolať funkciu spracovania signálu. Ak dieťa už uplynulo počas hovoru (takzvaný proces "zombie"), funkcia sa okamžite vráti. Akékoľvek systémové prostriedky používané dieťaťom sú uvoľnené. waitpid funkcia pozastaví vykonanie aktuálneho procesu až do dieťaťa, ako je špecifikované pid argument ukončil, alebo kým nie je doručený signál, ktorého úlohou je ukončiť aktuálny proces alebo zavolať funkciu spracovania signálu. Ak dieťa požaduje pid už skončila v čase hovoru (takzvaný proces "zombie"), funkcia sa okamžite vráti. Akékoľvek systémové prostriedky používané dieťaťom sú uvoľnené. Hodnota pid môže byť jedným z nasledujúcich: < -1 čo znamená čakať na akýkoľvek podriadený proces, ktorého ID skupiny procesov sa rovná absolútnej hodnote pid . -1 čo znamená čakať na akýkoľvek proces dieťaťa; to je to isté správanie, ktorépočkať exponátov. 0 čo znamená čakať na akýkoľvek podriadený proces, ktorého identifikácia procesnej skupiny sa rovná ID procesu volajúceho. > 0 čo znamená čakať na dieťa, ktorého ID procesu sa rovná hodnote pid . Hodnota možnosti je OR nula alebo viac z nasledujúcich konštánt: WNOHANG čo znamená návrat okamžite, ak neopustil žiadne dieťa. WUNTRACED čo znamená návrat aj deťom, ktoré sú zastavené a ktorých stav nebol zaznamenaný. (Voľby iba pre Linux nájdete nižšie.) ak postavenie nie jeNULOVÝ, počkať alebowaitpid uchovávať informácie o stave v mieste, na ktoré sa odkazuje postavenie . Tento stav je možné vyhodnotiť pomocou nasledujúcich makier (tieto makrá berú stat buffer (anint) ako argument --- nie je ukazovateľ na buffer!): WIFEXITED ( postavenie ) je nenulová, ak dieťa normálne skončilo. WEXITSTATUS ( postavenie ) sa vyhodnotí na najmenej významných osem bitov návratového kódu ukončeného dieťaťa, ktorý mohol byť nastavený ako argument pre volanievýchod() alebo ako argument pre spiatočný v hlavnom programe. Toto makro možno vyhodnotiť iba vtedy, akWIFEXITEDvrátené nenulové. WIFSIGNALED ( postavenie ) vracia pravý, ak sa podriadený proces ukončil kvôli signálu, ktorý nebol chytený. WTERMSIG ( postavenie ) vráti číslo signálu, ktorý spôsobil ukončenie podriadeného procesu. Toto makro možno vyhodnotiť iba vtedy, akWIFSIGNALED vrátené nenulové. WIFSTOPPED ( postavenie ) vracia pravdivý, ak je detský proces, ktorý spôsobil návrat, v súčasnosti zastavený; je to možné len vtedy, ak bol hovor uskutočnený pomocouWUNTRACED. WSTOPSIG ( postavenie ) vráti číslo signálu, ktorý spôsobil zastavenie dieťaťa. Toto makro možno vyhodnotiť iba vtedy, akWIFSTOPPED vrátené nenulové. Niektoré verzie systému Unix (napr. Linux, Solaris, ale nie AIX, SunOS) tiež definujú makroWCOREDUMP ( postavenie ) testovať, či dieťa spracováva dumpingové jadro. Používajte ho iba v #ifdef WCOREDUMP … #endif. ID procesu dieťaťa, ktoré opustilo, alebo nula, akWNOHANG bol použitý a žiadne dieťa nebolo k dispozícii, alebo -1 o chybe (v tomto prípade errno je nastavená na príslušnú hodnotu). ECHILD ak proces uvedený v pid neexistuje alebo nie je dieťaťom volajúceho procesu. (To sa môže stať pre vlastné dieťa, ak je akcia pre SIGCHLD nastavená na hodnotu SIG_IGN. Pozri tiež sekciu LINUX NOTES o vláknach.) EINVAL ak možnosti argument bol neplatný. EINTR akWNOHANG nebol nastavený a odblokovaný signál alebo aSIGCHLD bol chytený. popis
Hodnota návratnosti
chyby













