Ime
čakaj, počakaj - počakaj na zaključek procesa
Povzetek
#include pid_t čakati (int * stanje );pid_t waitpid (pid_t pid , int * stanje , int opcije );
Thepočakaj funkcija prekine izvajanje trenutnega postopka, dokler otrok ne izstopi ali dokler ni dostavljen signal, katerega dejanje je končanje trenutnega postopka ali klicanje funkcije za upravljanje signalov. Če je otrok že do konca klica (tako imenovani postopek "zombi"), se funkcija vrne takoj. Vsak sistemski vir, ki ga uporablja otrok, se sprosti. Thepočakaj funkcija prekine izvajanje trenutnega postopka do otroka, kot ga določi pid argument je končal ali dokler ni dostavljen signal, katerega dejanje je končanje trenutnega postopka ali klicanje funkcije za obdelavo signalov. Če je otrok na zahtevo pid je že končal do trenutka klica (tako imenovani postopek "zombi"), se funkcija vrne takoj. Vsak sistemski vir, ki ga uporablja otrok, se sprosti. Vrednost pid je lahko eden od: < -1 kar pomeni, da počakate na vsak otrokov postopek, katerega ID skupine procesov je enaka absolutni vrednosti pid . -1 kar pomeni počakati na kakršen koli otroški proces; to je isto vedenje, ki jepočakaj razstavi. 0 kar pomeni, da počakate na vsak otrokov postopek, katerega ID-je procesne skupine je enako kot pri procesu klica. > 0 kar pomeni, da počakate na otroka, katerega ID procesa je enako vrednosti pid . Vrednost opcije OR je nič ali več naslednjih konstant: WNOHANG kar pomeni, da se takoj vrne, če otrok ni zapustil. WUNTRACED kar pomeni tudi vrnitev otrokom, ki so ustavljeni, in o katerih statusu ni poročal. (Za možnosti samo za Linux glejte spodaj.) Če stanje niNIČ, počakaj alipočakaj shranite podatke o stanju na lokaciji, na katero je opozoril stanje . Ta status je mogoče ovrednotiti z naslednjimi makri (ti makri so stat buffer (anint) kot argument --- ne kazalec na pufer!): WIFEXITED ( stanje ) je nična, če otrok običajno zapusti. WEXITSTATUS ( stanje ) oceni najmanj osem bitov povratne kode otroka, ki je prenehal, kar je morda bilo postavljeno kot argument za klicizhod () ali kot argument za a vrnitev izjavo v glavnem programu. Ta makro je mogoče oceniti le, čeWIFEXITEDvrnil neveljavno. WIFSIGNALED ( stanje ) vrne res, če je otroški proces zapustil zaradi signala, ki ni bil ujet. WTERMSIG ( stanje ) vrne številko signala, ki je povzročil zaključek otrokovega postopka. Ta makro je mogoče oceniti le, čeWIFSIGNALED vrnil neveljavno. WIFSTOPPED ( stanje ) vrne res, če je otroški postopek, ki je povzročil vrnitev, trenutno ustavljen; to je možno le, če je bil klic opravljen z uporaboWUNTRACED. WSTOPSIG ( stanje ) vrne številko signala, zaradi katerega se otrok ustavi. Ta makro je mogoče oceniti le, čeWIFSTOPPED vrnil neveljavno. Nekatere različice Unixa (npr. Linux, Solaris, vendar ne AIX, SunOS) določajo tudi makroWCOREDUMP ( stanje ) da preveri, ali je otroški proces dampinški jedro. Uporabite to samo v #ifdef WCOREDUMP … #endif. ID procesa otroka, ki je izstopil, ali nič, čeWNOHANG je bil uporabljen in noben otrok ni bil na voljo, ali -1 pri napaki (v tem primeru errno nastavljena na ustrezno vrednost). ECHILD če je postopek določen v pid ne obstaja ali ni otrok klica. (To se lahko zgodi za lastnega otroka, če je dejanje za SIGCHLD nastavljeno na SIG_IGN. Glejte tudi razdelek LINUX NOTES o nitih.) EINVAL če je opcije argument je bil neveljaven. EINTR čeWNOHANG ni bil nastavljen in odblokiran signal ali aSIGCHLD je bil ujet. Opis
Vrnjena vrednost
Napake












