Dysgwch Reol Linux - aroswch

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.