Õpi Linuxi käsku - oota

Nimi

oota, waitpid - oodake protsessi lõpetamist

Kokkuvõte

#include
#include

pid_t ootama (int * staatus );
pid_t waitpid (pid_t pid , int * staatus , int valikud );

Kirjeldus

Ootefunktsioon peatab praeguse protsessi täitmise seni, kuni laps on väljunud või kuni signaal on kätte toimetatud, mille eesmärk on lõpetada praegune protsess või helistada signaalitöötlusfunktsioonile. Kui laps on juba kõne ajal (nn zombie) protsessist lahkunud, tagastab funktsioon kohe. Kõik lapse kasutatavad süsteemiressursid vabastatakse.

Ootamat- funktsioon peatab käimasoleva protsessi täitmise seni, kuni pid pidurite argumendi poolt määratud laps on lahkunud või seni, kuni saadetakse signaal, mille tegevus on lõpetada praegune protsess või helistada signaalitöötlusfunktsioonile. Kui laps, nagu seda nõuab pid, on kõne ajaks juba lahkunud (nn zombie protsess), tagastab funktsioon kohe. Kõik lapse kasutatavad süsteemiressursid vabastatakse.

Pidi väärtus võib olla üks järgmistest:

<-1

mis tähendab oodata mis tahes lapsprotsessi, mille protsessi grupi ID võrdub pidi absoluutväärtusega.

-1

mis tähendab oodata lapseprotsessi; see on sama käitumine, mis ootavad eksponeeringuid.

0

mis tähendab, et oodata iga lapseprotsessi, mille protsessi grupi ID võrdleb kõneprotsessi protsessi.

> 0

mis tähendab, et oodata lapse, kelle protsessi ID võrdub pidi väärtusega.

Võimaluste väärtus on OR või null või enam järgmistest konstandidest:

WNOHANG

mis tähendab, et kohe naasta, kui ükski laps pole lahkunud.

WUNTRACED

mis tähendab, et ka lapsed, kes on peatatud, saavad ka tagasi ja kelle staatust ei ole teatatud.

(Ainult Linuxi võimaluste kohta vt allpool.)

Kui olek ei ole NULL , oota või waitpid olekuteave asukohas, millele osutab staatus .

Seda staatust saab hinnata järgmiste makrodega (need makrosid võtavad statistilise puhvri ( int ) kui argumendina --- mitte punktihoidja puhvrisse!):

WIFEXITED ( staatus )

kui laps normaalselt lahkub, ei ole null.

WEXITSTATUS ( staatus )

hindab lõpetanud lapse tagasitulekukoodi kõige vähem olulisi kaheksat bitti, mis võib olla määratud argumendina väljumiskonkursile () või põhiprogrammi tagasisaatmise argumendina. Seda makrot saab hinnata ainult siis, kui WIFEXITED ei vasta nullile.

WIFSIGNALED ( olek )

tagastab tõese, kui lapseprotsess väljub signaali tõttu, mis ei olnud kinni püütud.

WTERMSIG ( staatus )

tagastab signaali numbri, mis põhjustas lapseprotsessi lõpetamise. Seda makrot saab hinnata ainult siis, kui WIFSIGNALED tagastatakse mitte nulli.

WIFSTOPPED ( staatus )

tagastab tõese, kui tagasipöördumist põhjustanud lapseprotsess on praegu peatatud; see on võimalik ainult siis, kui kõne tehti WUNTRACEDi abil .

WSTOPSIG ( olek )

tagastab signaali, mis põhjustas lapse peatumise. Seda makrot saab hinnata ainult siis, kui WIFSTOPPED tagastas nulli.

Mõned Unixi versioonid (nt Linux, Solaris, kuid mitte AIX, SunOS) määratlevad ka makro WCOREDUMP ( olek ), et kontrollida, kas laps töötleb pärandit . Kasutage seda ainult järgmises vormingus: #ifdef WCOREDUMP ... #endif.

Tagastatav väärtus

Väljastatud lapse protsessi ID või null, kui WNOHANGi kasutati ja lapsi ei olnud, või -1 viga (sel juhul on errno seatud sobiva väärtusega).

Vead

ECHILD

kui punktis 2 nimetatud protsess pid ei eksisteeri või ei ole kõneprotsessi laps. (See võib juhtuda iseseisva lapse puhul, kui SIGCHLD-i toiming on seatud SIG_IGN-ile. Vaadake ka lõiku teemat LINUX NOTES).

EINVAL

kui valikuvõimalus argument on kehtetu.

EINTR

kui WNOHANG ei olnud seatud ja blokeeritud signaal või SIGCHLD püüti.