Skip to main content

Počkajte - príkaz Linux - príkaz Unix

Anonim

názov

počkajte, waitpid - čakajte na ukončenie procesu

synopse

#include #include

pid_t wait (int * postavenie );pid_t waitpid (pid_t pid , int * postavenie , int možnosti );

popis

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.

Hodnota návratnosti

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).

chyby

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ý.