Mësoni Command Linux - pritni

emër

prisni, prisni - pritni për përfundimin e procesit

përmbledhje

#include
#include

pid_t prisni ( statusi int * );
pid_t waitpid (pid_t pid , int * statusi , opsionet int );

Përshkrim

Funksioni i pritjes pezullon ekzekutimin e procesit aktual deri sa një fëmijë të ketë dalë, ose derisa të lëshohet një sinjal, veprimi i të cilit është të ndërpresë procesin aktual ose të thërrasë një funksion të trajtimit të sinjalit. Nëse një fëmijë ka dalë tashmë nga koha e thirrjes (një proces i ashtuquajtur "zombie"), funksioni kthehet menjëherë. Çdo burim i sistemit i përdorur nga fëmija lirohet.

Funksioni waitpid pezullon ekzekutimin e procesit aktual deri sa një fëmijë të përcaktuar nga argumenti pid është larguar, ose derisa të lëshohet sinjali, veprimi i të cilit është të ndërpresë procesin aktual ose të thërrasë një funksion të trajtimit të sinjalit. Nëse një fëmijë siç kërkohet nga pid ka dalë tashmë nga koha e thirrjes (një proces i ashtuquajtur "zombie"), funksioni kthehet menjëherë. Çdo burim i sistemit i përdorur nga fëmija lirohet.

Vlera e pid mund të jetë një nga:

<-1

që do të thotë të presësh për çdo proces fëmijësh, grupi i të cilit është ID i grupit është i barabartë me vlerën absolute të pid .

-1

që do të thotë të presësh për çdo proces fëmijësh; kjo është sjellja e njëjtë që pritet ekspozita.

0

që do të thotë të presësh për çdo proces fëmijësh, grupi i të cilit është ID i grupit të njëjtë me atë të procesit të thirrjes.

> 0

që do të thotë të presësh për fëmijën ID e procesit të të cilit është e barabartë me vlerën e pid .

Vlera e opsioneve është një OR prej zero ose më shumë nga konstantet e mëposhtme:

WNOHANG

që do të thotë të ktheheni menjëherë nëse asnjë fëmijë nuk ka dalë.

WUNTRACED

që do të thotë të kthehesh edhe për fëmijët të ndaluar dhe statusi i të cilëve nuk është raportuar.

(Për opsionet vetëm për Linux, shihni më poshtë.)

Nëse statusi nuk është NULL , prisni ose prisni informacionin e statusit të dyqanit në vendin që tregohet nga statusi .

Ky status mund të vlerësohet me macrikat e mëposhtme (këto macros marrin tampon stat (një int ) si një argument --- nuk është një tregues në tampon!):

WIFEXITED ( statusi )

është jo-zero nëse fëmija ka dalë normalisht.

WEXITSTATUS ( statusi )

vlerëson në tetë bit pak më domethënës të kodit të kthimit të fëmijës i cili përfundoi, i cili mund të jetë vendosur si argument për një thirrje për dalje () ose si argument për një deklaratë kthimi në programin kryesor. Kjo makro mund të vlerësohet vetëm nëse WIFEXITED kthehet jo-zero.

WIFSIGNALED ( statusi )

kthehet e vërtetë nëse procesi i fëmijës ka dalë për shkak të një sinjali që nuk u kap.

WTERMSIG ( statusi )

kthen numrin e sinjalit që shkaktoi ndërprerjen e procesit të fëmijës. Kjo makro mund të vlerësohet vetëm nëse WIFSIGNALED u kthye jo-zero.

WIFSTOPPED ( statusi )

kthehet e vërtetë nëse procesi i fëmijës që shkaktoi kthimin është ndalur aktualisht; kjo është e mundur vetëm nëse thirrja është bërë duke përdorur WUNTRACED .

WSTOPSIG ( statusi )

kthen numrin e sinjalit që shkaktoi që fëmija të ndalet. Kjo makro mund të vlerësohet vetëm nëse WIFSTOPPED u kthye jo-zero.

Disa versione të Unix (p.sh. Linux, Solaris, por jo AIX, SunOS) gjithashtu përcaktojnë një makro WCOREDUMP ( status ) për të provuar nëse procesi i fëmijës hedh bërthamën e hedhur. Përdoreni vetëm këtë të mbyllur në #ifdef WCOREDUMP ... #endif.

Vlera e Kthimit

ID-ja e procesit të fëmijës që ka dalë, ose zero nëse WNOHANG është përdorur dhe asnjë fëmijë nuk është në dispozicion, ose -1 gabimisht (në të cilin rast errno është vendosur në një vlerë të duhur).

gabimet

ECHILD

nëse procesi i përcaktuar në pid nuk ekziston ose nuk është fëmijë i procesit të thirrjes. (Kjo mund të ndodhë për fëmijën e dikujt nëse veprimi për SIGCHLD është vendosur në SIG_IGN. Shikoni gjithashtu seksionin LINUX NOTES rreth fijeve.)

EINVAL

nëse argumenti i opsioneve ishte i pavlefshëm.

EINTR

nëse WNOHANG nuk ishte vendosur dhe një sinjal i zhbllokuar ose një SIGCHLD u kap.