Nimi
odota, waitpid - odota prosessin päättymistä
tiivistelmä
#sisältää pid_t odottaa (int * status );pid_t waitpid (pid_t pid , int * status , int vaihtoehtoja );
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. Poistuneen lapsen prosessin tunnus, tai nolla, josWNOHANG ja lapsia ei ollut saatavilla, tai -1 virheestä (tässä tapauksessa errno on asetettu sopivaan arvoon). 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. Kuvaus
Palautusarvo
virheet




