Sužinokite Linux komandą - palauk

vardas

palauk, waitpid - laukti proceso nutraukimo

Anotacija

#include
#include

pid_t laukti (int * statusas );
pid_t waitpid (pid_t pid , int * status , int variantai );

apibūdinimas

Laukimo funkcija sustabdo dabartinio proceso vykdymą, kol vaikas išeina, arba kol bus pateiktas signalas, kurio veiksmas yra nutraukti dabartinį procesą arba skambinti signalų apdorojimo funkcijai. Jei vaikas jau baigėsi pokalbio metu (vadinamasis "zombių" procesas), funkcija grąžinama iš karto. Bet kokie sistemos ištekliai, kuriuos naudoja vaikas, yra išlaisvinti.

" Waitpid" funkcija sustabdo dabartinio proceso vykdymą, kol pasibaigė pid argumento nurodytas vaikas arba kol bus pateiktas signalas, kurio veiksmas yra nutraukti dabartinį procesą arba skambinti signalų tvarkymo funkcijai. Jei vaikas, kaip paprašė pid , jau baigėsi pokalbio metu (vadinamasis "zombių" procesas), funkcija grįžta iš karto. Bet kokie sistemos ištekliai, kuriuos naudoja vaikas, yra išlaisvinti.

PID vertė gali būti viena iš:

<-1

o tai reiškia laukti bet kurio vaiko proceso, kurio proceso grupės ID yra lygus absoliučiai pid sumai .

-1

o tai reiškia laukti bet kurio vaiko proceso; tai yra tas pats elgesys, kuris laukia eksponatų.

0

o tai reiškia palaukti bet kokį vaiko procesą, kurio proceso grupės ID yra lygus skambinančio proceso.

> 0

o tai reiškia laukti vaiko, kurio proceso ID yra lygus pid dydžiui.

Galimybių vertė yra AR iš nulio ar daugiau šių konstantų:

WNOHANG

o tai reiškia grįžti iš karto, jei nė vienas vaikas neišeina.

WUNTRACED

o tai reiškia, kad taip pat grįžta už sustojusias vaikus, kurių statusas nebuvo nurodytas.

("Linux-only" parinktys, žr. Toliau.)

Jei statusas nėra NULL , palaukite arba waitpid parduotuvės būsenos informaciją vietovėje, kurią nurodo statusas .

Ši būsena gali būti įvertinta naudojant šias makrokomandas (šie makrokomandai priima stat buferį ( int ) kaip argumentą --- ne rodyklę į buferį!):

WIFEXITED ( statusas )

jei vaikas išeina įprastai, nėra lygus nuliui.

WEXITSTATUS ( statusas )

vertinamas iki mažiausiai reikšmingų aštuonių nutraukto vaiko grąžinimo kodo bitų, kurie galėjo būti laikomi argumentu, kad kvietimas išeiti () arba kaip argumentas grąžinimo pareiškimui pagrindinėje programoje. Ši makrokomandas gali būti įvertintas tik tuo atveju, jei WIFEXITED grįžta ne nuliui.

WIFSIGNALED ( statusas )

grįžta tiesa, jei vaiko procesas pasibaigė dėl signalo, kuris nebuvo sugautas.

WTERMSIG ( statusas )

grąžina signalo, dėl kurio vaikas baigė darbą, skaičius. Ši makrokomandas gali būti įvertintas tik tada, kai WIFSIGNALED grįžo ne nuliui.

WIFSTOPPED ( statusas )

grįžta tiesa, jei vaiko procesas, dėl kurio sugrįžta, šiuo metu sustojo; tai įmanoma tik tuo atveju, jei skambutis buvo atliktas naudojant WUNTRACED .

WSTOPSIG ( statusas )

grąžina signalo, dėl kurio vaikas sustojo, numerį. Ši makrokomandas gali būti įvertintas tik tuo atveju, jei WIFSTOPPED grįžo nuliui.

Kai kuriose "Unix" versijose (pvz., "Linux", "Solaris", bet ne "AIX", "SunOS") taip pat apibrėžiama makrokomandos WCOREDUMP ( būsena ), siekiant išbandyti, ar vaikas vykdo dempingo procesą. Naudokite tik šią pridedamą versiją #ifdef WCOREDUMP ... #endif.

Grąžos vertė

Išvažiuoto vaiko proceso ID arba nulis, jei buvo naudojamas WNOHANG, be vaiko nebuvo, arba -1 dėl klaidos (tokiu atveju errno nustatyta tinkama reikšme).

Klaidos

ECHILD

jei procesas nurodytas PID nėra arba nėra skambinančio proceso vaikas. (Tai gali nutikti savo vaikui, jei veiksmas SIGCHLD yra nustatytas kaip SIG_IGN. Taip pat žiūrėkite skyrių "LINUX NOTES" apie temas.)

EINVAL

jei variantų argumentas neteisingas.

EINTR

jei WNOHANG nebuvo nustatytas ir atblokuotas signalas arba SIGCHLD buvo sugauta.