Mọ aṣẹ Lainosii - duro

Oruko

duro, waitpid - duro fun isinmi ilana

Atọkasi

#yiyan
#include

ipamọ pid_t (int * ipo );
pid_t waitpid (pid_t pid , int * status , int options );

Apejuwe

Iṣẹ idaduro duro fun ipaniyan ti ilana lọwọlọwọ titi ọmọde ti fi jade, tabi titi ti a fi fi ami naa han ti iṣẹ rẹ jẹ lati fopin si ilana lọwọlọwọ tabi lati pe iṣẹ idaniloju ifihan. Ti ọmọ ba ti jade tẹlẹ nipasẹ akoko ipe (ilana ti "zombie" ti a npe ni), iṣẹ naa yoo pada lẹsẹkẹsẹ. Gbogbo eto eto ti a lo fun ọmọde ni ominira.

Iṣẹ iṣẹ waitingpid duro fun ipaniyan ti ilana lọwọlọwọ titi ọmọde kan ti o ti ṣalaye nipasẹ ariyanjiyan ti pid ti jade, tabi titi ti a fi fi ami kan han ti iṣẹ rẹ jẹ lati fopin si ilana lọwọlọwọ tabi lati pe iṣẹ idaniloju ifihan. Ti ọmọ bi beere fun pid ti lọ tẹlẹ nipasẹ akoko ipe (ilana ti "zombie" ti a npe ni), iṣẹ naa yoo pada lẹsẹkẹsẹ. Gbogbo eto eto ti a lo fun ọmọde ni ominira.

Iye iye Pid le jẹ ọkan ninu:

<-1

eyi ti o tumọ si lati duro fun ilana ọmọ eyikeyi ti ID ẹgbẹ ẹgbẹ jẹ dogba pẹlu iye ti o jẹ iye ti iye.

-1

eyi ti o tumọ si duro fun eyikeyi ilana ọmọ; Eyi ni ihuwasi kanna ti o duro awọn ifihan.

0

eyi ti o tumo si lati duro fun ilana ọmọ eyikeyi ti ID ẹgbẹ ẹgbẹ jẹ dogba ti ilana ipe.

> 0

eyi ti o tumo si lati duro fun ọmọ ti ID ilana rẹ jẹ dọgba pẹlu iye ti pid .

Iye awọn aṣayan jẹ OR ti odo tabi diẹ ẹ sii ti awọn idiwọn wọnyi:

WNOHANG

eyi ti o tumọ si pada lẹsẹkẹsẹ ti ko ba si ọmọ ti o ti jade.

WUNTRACED

eyi ti o tumo si lati tun pada fun awọn ọmọde ti a ti duro, ati pe ipo ti ko ti sọ.

(Fun awọn aṣayan Lainos nikan, wo isalẹ.)

Ti ipo ko ba jẹ NULL , duro tabi itaja itaja ipo itaja pamọ ni ibi ti o tọka si nipasẹ ipo .

Ipo yii le ṣee ṣe ayẹwo pẹlu awọn eroja to tẹle (awọn macro yi ya adiye ere (ohun int ) bi ariyanjiyan - kii ṣe ijuboluwo si ifibọ!):

WIFEXITED ( ipo )

jẹ kii kii-odo ti ọmọ naa ba jade kuro ni deede.

WEXITSTATUS ( ipo )

ṣe akojopo si iye diẹ ti o kere ju mẹjọ ti koodu iyipada ti ọmọ ti o fopin si, eyi ti o le ti ṣeto bi ariyanjiyan si ipe lati jade () tabi bi ariyanjiyan fun alaye atunṣe ninu eto akọkọ. A ko le ṣe ayẹwo nikan fun apẹẹrẹ yi nikan ti WIFEXITED pada ti kii-odo.

WIFSIGNALED ( ipo )

pada otitọ bi ilana ọmọde ba jade nitori ifihan agbara ti a ko mu.

WTERMSIG ( ipo )

pada nọmba ti ifihan agbara ti o fa ilana ilana ọmọ lati fopin si. A ko le ṣe ayẹwo aye yi nikan ti WIFSIGNALED ti pada-kii-odo.

WIFSTOPPED ( ipo )

yoo pada daadaa bi ilana ọmọkunrin ti o ba mu ki ipadabọ naa pada jẹ lọwọlọwọ; eyi ṣee ṣe nikan nikan ti ipe ba ṣe pẹlu lilo WUNTRACED .

WSTOPSIG ( ipo )

pada nọmba ti ifihan agbara ti o mu ki ọmọ naa dawọ duro. A le ṣe ayẹwo nikan fun apẹẹrẹ yi nikan ti WIFSTOPPED pada ti kii-odo.

Diẹ ninu awọn ẹya ti Unix (fun apẹẹrẹ Linux, Solaris, ṣugbọn kii AIX, SunOS) tun ṣe alaye WCOREDUMP kan ( ipo ) lati ṣe idanwo boya ilana ọmọde ti nfun akori. Nikan lo eyi ti o wa ninu #ifdef WCOREDUMP ... #endif.

Pada Iyipada

ID ID ti ọmọ ti o jade, tabi odo ti a ba lo WNOHANG ko si ọmọde wa, tabi -1 ni aṣiṣe (eyiti o jẹ errno ti o yẹ si iye ti o yẹ).

Aṣiṣe

ECHILD

ti ilana naa ti a sọ sinu Pid ko tẹlẹ tabi kii ṣe ọmọ ti ilana ipe. (Eyi le ṣẹlẹ fun ọmọ ti ọmọ kan ti o ba ṣeto iṣẹ fun SIGCHLD si SIG_IGN. Wo tun apakan apakan LINUX nipa awọn okun.)

EINVAL

ti o ba jẹ ariyanjiyan aṣayan ko dara.

EINTR

ti a ko ba ṣeto WNOHANG ati ifihan agbara ti a ko sita tabi a ti mu SIGCHLD kan .