Lue Linux Command - odota

Nimi

odota, waitpid - odota prosessin päättymistä

tiivistelmä

#include
#include

pid_t odottaa (int * status );
pid_t waitpid (pid_t pid , int * status , int asetukset );

Kuvaus

Odotusfunktio keskeyttää nykyisen prosessin suorittamisen, kunnes lapsi on poistunut tai kunnes signaali toimitetaan, jonka toimi on lopettaa nykyinen prosessi tai kutsua signaalin käsittelytoiminto. Jos lapsi on jo poistunut puhelun ajankohdasta (niin kutsuttu zombie-prosessi), toiminto palaa välittömästi. Kaikki lapsen käyttämät järjestelmäresurssit vapautetaan.

Waitpid- toiminto keskeyttää nykyisen prosessin suorittamisen, kunnes pid- argumentin määrittämä lapsi on poistunut tai kunnes signaali toimitetaan, jonka toimi on lopettaa nykyinen prosessi tai kutsua signaalin käsittelytoiminto. Jos lapsi, kuten pid on pyytänyt, on jo poistunut puhelun ajankohdasta (ns. Zombie-prosessi), funktio palaa välittömästi. Kaikki lapsen käyttämät järjestelmäresurssit vapautetaan.

Pid: n arvo voi olla yksi seuraavista:

<-1

joka tarkoittaa odottaa mitä tahansa lapsiprosessia, jonka prosessiryhmän tunnus on yhtä kuin pidin absoluuttinen arvo.

-1

mikä tarkoittaa odottaa minkäänlaista lapsenkäsittelyä; tämä on sama käyttäytyminen, joka odottaa näyttelyitä.

0

mikä tarkoittaa sitä, että odotetaan mitä tahansa lapsiprosessia, jonka prosessiryhmän tunnus on yhtä suuri kuin kutsuprosessin.

> 0

mikä tarkoittaa odottaa lasta, jonka prosessidunniste on yhtä kuin pid: n arvo.

Vaihtoehtojen arvo on OR tai nolla tai useampi seuraavista vakioista:

WNOHANG

mikä tarkoittaa paluuta välittömästi, jos lapsi ei ole poistunut.

WUNTRACED

mikä tarkoittaa myös paluuta lapsille, jotka ovat pysähtyneet ja joiden tilasta ei ole ilmoitettu.

(Vain Linux-vaihtoehdoista, katso alla.)

Jos tila ei ole NULL , odota tai waitpid tallentaa tilatiedot sijainnissa, jonka tila osoittaa.

Tätä tilaa voidaan arvioida seuraavilla makroilla (nämä makrot käyttävät stat-puskuria ( int ) argumenttina --- ei osoitinta puskurille!):

WIFEXITED ( status )

on ei-nolla, jos lapsi poistuu normaalisti.

WEXITSTATUS ( status )

arvioi lapsen palautuskoodin vähiten merkitsevälle kahdeksaan bittiin, jotka ovat päättyneet, mikä on ehkä asetettu argumentiksi poistumispuhelulle () tai argumenttina palautusilmoitukselle pääohjelmassa. Tätä makroa voidaan arvioida vain, jos WIFEXITED palasi muuta kuin nollaa.

WIFSIGNALED ( tila )

palauttaa true, jos lapsi prosessi poistuu signaalin takia, jota ei ole pyydetty.

WTERMSIG ( tila )

palauttaa sen signaalin numeron, joka aiheutti lapsiprosessin päättymisen. Tätä makroa voidaan arvioida vain, jos WIFSIGNALED palauttaa ei-nollan.

WIFSTOPPED ( tila )

palauttaa true, jos lapsen prosessi, joka aiheutti palautuksen, on tällä hetkellä lopetettu; tämä on mahdollista vain, jos puhelu suoritettiin WUNTRACEDin avulla .

WSTOPSIG ( tila )

palauttaa sen signaalin numeron, joka aiheutti lapsen lopettamisen. Tätä makroa voidaan arvioida vain, jos WIFSTOPPED palauttaa ei-nollan.

Jotkin Unix-versiot (esim. Linux, Solaris, mutta ei AIX, SunOS) määrittelevät myös makron WCOREDUMP ( tila ) testaamaan, onko lapsi prosessoinut polkumyynnin ydin. Käytä tätä vain mukana #ifdef WCOREDUMP ... #endif.

Palautusarvo

Poistuneen lapsen prosessi ID tai nolla, jos WNOHANGia käytettiin eikä lapsella ollut käytettävissään tai -1 virheestä (jolloin errno asetetaan sopivaan arvoon).

virheet

ECHILD

jos kohdassa määritelty prosessi pid ei ole tai se ei ole kutsumisprosessin lapsi. (Tämä voi tapahtua oman lapsen kohdalla, jos SIGCHLD-toiminnon asetus on SIG_IGN. Katso myös LINUX NOTES -otsikko kierteistä.)

EINVAL

jos vaihtoehdon argumentti oli virheellinen.

EINTR

jos WNOHANGia ei ole asetettu ja lukittu signaali tai SIGCHLD on kiinni.