Nav
benda bisekin, ji bo pêvajoyê vekin
Synopsis
#include
#include
pid_t wait (int * status );
pid_t waitpid (pid_t pid , int * stat , hilbijêre int );
Terîf
Çalakiya bendava darizandina darizandina pêvajoyê ya ku heta ku zarok derketin an jî heta ku nîşanek veguhestin ku çalakiya ku pêvajoya niha de qedexe ye yan karûbarê destûra karûbarê nîşan bide telefonê dike. Heke zarok ji hêla dema telefonê ve (ex-navê "zombî") derket holê, fonksiyonê yekser vegerîne. Her pergala çavkaniyên ku ji hêla zarokan ve tê bikaranîn azad kirin.
Fîlmeya weya pisporê darvekirina pêvajoyê ya ku niha ji hêla pid- paqijkirinê ve tête vekirî ye, an jî heta ku hestek dabû destnîşankirin ku çalakiya ku pêvajoya niha de qedexe ye an karûbarê destûra karûbarê nîşan bide. Heke zarok ku ji pid ji daxwaza daxwaza daxwaza wext ji dema wextê ve hatibû veguhestin (pêvajoyek bi navê "zombî"), fonksiyon yekser vegerîne. Her pergala çavkaniyên ku ji hêla zarokan ve tê bikaranîn azad kirin.
Nirxa pid dikare yek ji
<-1
ku tê wateya ku pêvajoyek pêvajoya zaroka bendê, ku nasnameya grûpê wekheviya nirxê pid be .
-1
kîjan wateya ku pêvajoyek zarokek bendê bimînin; Ev heman helwestek e ku pêşniyar dike.
0
ku tê wateya ku pêvajoyek pêvajoya zaroka bendê, ku nasnameya grûpê pêvajoya wê ya pêvajoya bangê ye.
> 0
kîjan tê wateya ku ji bo zarokê ku nasnameya pêvajoyê wekheviya pid be .
Çirxên alternatîf an an zûtirîn an jî bêtir bêhtir jêrînan e:
WNOHANG
kîjan tê wateya ku tu zarok nabe.
WÊTRACED
ku tê wateya ku ji bo zarokên ku têne rawestandin, vegerin û rewşa wî nehatiye ragihandin.
(Ji bo hilbijartinên Linux-tenê, jêrîn binêrin.)
Heger statuyek nULL nabe , agahdariya stateyê ya li benda rawestandinê an betalpidê li cîhê ku ji aliyê statuya ve girêdayî ye .
Ev statuya dikare bi macro jêr têne nirxandin (ev macro bafrokek (an int ) wek argumentek - nexşterek ji pêdivî ye!):
BİXWÎNE ( status )
Ger zarokê bi awayekî normal ve derkeve.
WEXITSTATUS ( status )
nirxên herî kêm 8 bîtên vegera koda ku zarok ku tête qedexekirin, dibe ku wekî meseleyek ji bo derketinê ()) an jî wekî argumentê ji bo bernameyek vegera di bernameya sereke de hatiye diyarkirin. Ev macro dikare tenê werin nirxandin ku heger WIFEXITED ne- şûnde vegeriyan.
WIFSIGNALED ( status )
eger ev pêvajoya zarok ji ber ku nîşanek ku nehatibû girtin nehatiye vegerandin.
WTERMSIG ( status )
hejmarek hejmara navnîşê vedigire ku ji sedema pêvajoya zaroka zarokan winda dike. Ev macro dikare tenê nirxandin ku WIFSIGNALED ne-şûne vegeriyan.
WIFSTOPPED ( status )
Heke vegerandina zarokê ku ji bo veguhastina rast tê veguhestin rast e; ev yek tenê dibe ku heya telefonê bi karûbarê kar anîn .
WSTOPSIG ( status )
hejmarek hejmara navnîşê vedigire ku ji sedema zarok ve raweste. Ev macro dikare tenê nirxandin ku eger WIFSTOPPED ne-şûne vegeriyan.
Hin versiyonên Unix (mînakek Linux, Solaris, lê ne AIX, SunOS) jî testa WCOREDUMP (statue ) jî tehlîm bike ku bizanin ka pêvajoya zarokê kurê dumped. Tenê vê karê li #ifdef WCOREDUMP tê bikaranîn ... #endif.
Nirxê vegerin
Nasnameya pêvajoyê ya zarokê ku WNOHANG hate bikaranîn û hejmar e û zarok nebûye, an jî li ser xeletiyek heye (li kîjan rewşê çewtiyek çêkirî ye).
Şaş
ECHILD
Heke pêvajoyê di navnîşan de diyar kirin pid nîne an zarokê ne pêvajoya banga pêkanîn. (Ev dibe ku ji bo çalakiyek ji bo SIGCHLD ve hatiye şandin ji bo zarokek yek jixwe dibe SIG_IGN. Li beşa LINUX Nîşeyên li ser mijarên din binêrin.)
EINVAL
heger hilbijêrên mimkûn ne çewt e.
EINTR
Heke WNOHANG nehatiye sazkirin û nîşanek an betalkirin an SIGCHLD hate girtin.