Enw
aros, aros - aros am derfynu'r broses
Crynodeb
#include
#include
pid_t aros ( statws int * );
pid_t waitpid (pid_t pid , int * statws , int opsiynau );
Disgrifiad
Mae'r swyddogaeth aros yn atal gweithredu'r broses gyfredol nes bod plentyn wedi dod i ben, neu hyd nes y bydd signal yn cael ei gyflwyno, sef gweithredu i derfynu'r broses gyfredol neu i alw swyddogaeth trin signal. Os yw plentyn eisoes wedi ymestyn erbyn amser yr alwad (proses a elwir yn "zombi"), mae'r swyddogaeth yn dychwelyd yn syth. Caiff unrhyw adnoddau system a ddefnyddir gan y plentyn eu rhyddhau.
Mae'r swyddogaeth waelod yn atal gweithrediad y broses gyfredol nes bod plentyn fel y'i nodir gan y ddadl pid wedi dod i ben, neu hyd nes bydd signal yn cael ei gyflwyno, sef gweithredu i derfynu'r broses gyfredol neu i alw swyddogaeth trin signal. Os yw plentyn fel y gwnaethpwyd cais amdano eisoes wedi dod i ben erbyn amser yr alwad (proses "zombi"), mae'r swyddogaeth yn dychwelyd yn syth. Caiff unrhyw adnoddau system a ddefnyddir gan y plentyn eu rhyddhau.
Gall gwerth pid fod yn un o:
<-1
sy'n golygu aros am unrhyw broses plentyn y mae ei ID grŵp proses yn hafal i werth absoliwt pid .
-1
sy'n golygu aros am unrhyw broses plentyn; dyma'r un ymddygiad sy'n aros arddangosfeydd.
0
sy'n golygu aros am unrhyw broses plentyn y mae ei ID grŵp proses yn gyfartal â phroses y galw.
> 0
sy'n golygu aros i'r plentyn y mae ei hunan-broses yn gyfwerth â gwerth pid .
Gwerth yr opsiynau yw NEU o ddim neu fwy o'r cysonion canlynol:
WNOHANG
sy'n golygu dychwelyd yn syth os nad oes plentyn wedi dod allan.
WUNTRACED
sy'n golygu dychwelyd hefyd i blant sydd wedi'u stopio, ac nad yw eu statws wedi cael eu hadrodd.
(Ar gyfer opsiynau Linux-unig, gweler isod.)
Os nad yw statws yn wybodaeth statws storio amseroedd neu aros yn y lleoliad a nodir yn ôl statws .
Gellir gwerthuso'r statws hwn gyda'r macros canlynol (mae'r macros hyn yn cymryd y byffer ystadegol (fel rhan o ddadl --- nid pwyntydd i'r byffer!):
WIFEXITED ( statws )
nid yw'n sero pe bai'r plentyn yn mynd allan fel rheol.
WEXITSTATUS ( statws )
yn gwerthuso'r wyth rhan arwyddocaol lleiaf o gôd dychwelyd y plentyn a ddaeth i ben, a allai fod wedi'i osod fel y ddadl i alwad i ymadael () neu fel y ddadl am ddatganiad dychwelyd yn y brif raglen. Dim ond os yw WIFEXITED yn dychwelyd di-sero y gellir gwerthuso'r macro hwn yn unig.
WIFSIGNALED ( statws )
yn dychwelyd yn wir pe bai'r broses plentyn wedi ymadael oherwydd signal na chafodd ei ddal.
WTERMSIG ( statws )
yn dychwelyd nifer y signal a achosodd i broses y plentyn ddod i ben. Ni ellir gwerthuso'r macro hwn dim ond os dychwelodd WIFSIGNALED nad yw'n sero.
WIFSTOPPED ( statws )
yn dychwelyd yn wir os yw'r broses plentyn a achosodd y dychweliad yn cael ei stopio ar hyn o bryd; dim ond os yw'r alwad yn cael ei wneud gan ddefnyddio WUNTRACED .
WSTOPSIG ( statws )
yn dychwelyd nifer y signal a achosodd i'r plentyn roi'r gorau iddi. Ni ellir gwerthuso'r macro hwn dim ond os dychwelwyd WIFSTOPPED nad yw'n sero.
Mae rhai fersiynau o Unix (ee Linux, Solaris, ond nid AIX, SunOS) hefyd yn diffinio macro WCOREDUMP ( statws ) i brofi a yw'r broses plentyn yn cael ei gohirio craidd. Defnyddiwch hyn amgaeëdig yn #ifdef WCOREDUMP ... #endif.
Gwerth Dychwelyd
ID y broses o'r plentyn a ymadawodd, neu sero os defnyddiwyd WNOHANG ac nad oedd unrhyw blentyn ar gael, neu -1 ar gamgymeriad (ac felly mae errno wedi'i osod i werth priodol).
Gwallau
ECHILD
os yw'r broses a bennir yn nid yw pid yn bodoli neu nad yw'n blentyn o'r broses alw. (Gall hyn ddigwydd i blentyn eich hun os yw'r weithred ar gyfer SIGCHLD wedi'i osod i SIG_IGN. Gweler hefyd yr adran NODIADAU LINUX ynglŷn ag edafedd.)
EINVAL
os oedd y ddadl opsiynau yn annilys.
EINTR
os na chafodd WNOHANG ei osod a bod signal wedi'i dad- ddialio neu SIGCHLD yn cael ei ddal.