Skip to main content

Odota - Linux Command - Unix Command

Writing 2D Games in C using SDL by Thomas Lively (Kesäkuu 2026)

Writing 2D Games in C using SDL by Thomas Lively (Kesäkuu 2026)
Anonim

Nimi

odota, waitpid - odota prosessin päättymistä

tiivistelmä

#sisältää #sisältää

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

Kuvaus

odota toiminto keskeyttää nykyisen prosessin suorittamisen, kunnes lapsi on poistunut, tai kunnes signaali toimitetaan, jonka toiminta on päättää 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 lapsi määrittelee pid argumentti on poistunut tai kunnes signaali on toimitettu, jonka toiminta on päättää nykyinen prosessi tai kutsua signaalin käsittelytoiminto. Jos lapsi on pyytänyt pid on jo poistunut puhelun ajankohdasta (ns. zombie-prosessi), funktio palaa välittömästi. Kaikki lapsen käyttämät järjestelmäresurssit vapautetaan.

Arvo pid voi olla yksi seuraavista:

< -1

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

-1

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

0

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

> 0

mikä tarkoittaa odottaa lasta, jonka prosessin tunnuksen arvo on yhtä suuri kuin pid .

Arvo vaihtoehtoja on OR, jonka nolla tai useampi seuraavista vakioista on:

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 status ei oleTYHJÄ, odota taiwaitpid tallentaa tilatiedot sijaintikohdassa status .

Tätä tilaa voidaan arvioida seuraavilla makroilla (nämä makrot ottavat tilastopuskurin (anint) argumenttina --- ei osoitinta puskurille!):

WIFEXITED ( status )

on ei-nolla, jos lapsi poistuu normaalisti.

WEXITSTATUS ( status )

arvioi lapsen palautuskoodin vähiten merkitseviä 8 bittiä, jotka ovat päättyneet, mikä on ehkä asetettu argumentiksiexit () tai argumenttina a palata pääohjelmaan. Tätä makroa voidaan arvioida vain, josWIFEXITEDpalasi ei-nollaan.

WIFSIGNALED ( status )

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

WTERMSIG ( status )

palauttaa sen signaalin numeron, joka aiheutti lapsiprosessin päättymisen. Tätä makroa voidaan arvioida vain, josWIFSIGNALED palasi ei-nollaan.

WIFSTOPPED ( status )

palauttaa true, jos lapsen prosessi, joka aiheutti palautuksen, on tällä hetkellä lopetettu; tämä on mahdollista vain, jos puhelu on tehty käyttäenWUNTRACED.

WSTOPSIG ( status )

palauttaa sen signaalin numeron, joka aiheutti lapsen lopettamisen. Tätä makroa voidaan arvioida vain, josWIFSTOPPED palasi ei-nollaan.

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

Palautusarvo

Poistuneen lapsen prosessin tunnus, tai nolla, josWNOHANG ja lapsia ei ollut saatavilla, tai -1 virheestä (tässä tapauksessa errno on asetettu sopivaan arvoon).

virheet

ECHILD

jos kohdassa määritelty prosessi pid ei ole olemassa tai 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 vaihtoehtoja argumentti oli virheellinen.

EINTR

josWNOHANG ei ole asetettu ja estetty signaali tai aSIGCHLD jäi kiinni.