Saznajte Linux Command - pričekajte

Ime

pričekajte, waitpid - pričekajte prestanak procesa

Sinopsis

#include
#include

pid_t čekati (int * status );
pid_t waitpid (pid_t pid , int * status , int opcije );

Opis

Funkcija čekanja suspendira izvršavanje tekućeg procesa sve dok dijete ne izađe, ili dok se ne isporučuje signal čija je radnja prekidanje trenutnog procesa ili pozivanje funkcije rukovanja signalom. Ako je dijete već napustilo vrijeme poziva (takozvani "zombi" postupak), funkcija se odmah vraća. Svaki resurs sustava koji koristi dijete oslobođen je.

Funkcija waitpid obustavlja izvršavanje trenutnog procesa sve dok dijete ne bude odre eno pid argumentom ili dok se ne isporučuje signal čija je radnja prekidanje trenutnog procesa ili pozivanje funkcije rukovanja signalom. Ako je dijete koje je zatražilo pid već napustilo vrijeme poziva (takozvani "zombi" postupak), funkcija se odmah vraća. Svaki resurs sustava koji koristi dijete oslobođen je.

Vrijednost pid može biti jedan od:

<-1

što znači pričekati bilo koji proces djeteta čiji je ID procesne skupine jednak apsolutnoj vrijednosti pid .

-1

što znači čekati bilo koji proces djeteta; to je isto ponašanje koje čeka izložbe.

0

što znači da pričekate bilo koji proces djeteta čiji je ID procesne grupe jednak onome u procesu pozivanja.

> 0

što znači čekati dijete čiji ID procesa je jednako vrijednosti pid .

Vrijednost opcija je OR od nula ili više od sljedećih konstanti:

WNOHANG

što znači da se odmah vratite ako nijedno dijete nije izašlo.

WUNTRACED

što znači i povratak za djecu koja su zaustavljena i čiji status nije prijavljen.

(Za opcije samo za Linux, pogledajte dolje.)

Ako status nije NULL , pričekajte ili pričekajte informacije o statusu trgovine na mjestu naznačenom prema statusu .

Taj se status može procijeniti pomoću sljedećih makronaredbi (te makronaredbe uzimaju stat buffer ( int ) kao argument - ne pokazivač u međuspremniku!):

WIFEXITED ( status )

nije nula ako dijete normalno izlazi.

WEXITSTATUS ( status )

procjenjuje na najmanje značajne osam bitova povratnog koda djeteta koje su prestale, a koje su možda postavljene kao argument za poziv na izlaz () ili kao argument za povratnu izjavu u glavnom programu. Ova se makronaredba može procijeniti samo ako se WIFEXITED vratio na nulu.

WIFSIGNALED ( status )

vraća se istinito ako je proces djeteta izašao zbog signala koji nije uhvaćen.

WTERMSIG ( status )

vraća broj signala koji je doveo do prekida procesa djeteta. Ova se makronaredba može ocijeniti samo ako je WIFSIGNALED vratio nula.

WIFSTOPPED ( status )

vraća se istinito ako je proces djeteta koji je doveo do povrata trenutačno zaustavljen; to je moguće samo ako je poziv učinjen WUNTRACED-om .

WSTOPSIG ( status )

vraća broj signala koji je izazvao dijete da se zaustavi. Ova se makronaredba može ocijeniti samo ako je WIFSTOPPED vraćen ne-nula.

Neke verzije sustava Unix (npr. Linux, Solaris, ali ne i AIX, SunOS) definiraju i makronaredbu WCOREDUMP ( status ) kako bi testirali je li dijete procesu odbacila jezgru. Koristite samo ovu stavku u #ifdef WCOREDUMP ... #endif.

Povratna vrijednost

ID procesa djeteta koji je izašao, ili nula ako je WNOHANG upotrijebljen, a nijedno dijete nije bilo dostupno, ili -1 na pogrešku (u tom je slučaju errno postavljen na odgovarajuću vrijednost).

greške

ECHILD

ako je proces naveden u pid ne postoji ili nije dijete pozivnog procesa. (To se može dogoditi za vlastito dijete ako je radnja za SIGCHLD postavljena na SIG_IGN. Također pogledajte odjeljak LINUX NAPOMENE o temama.)

EINVAL

ako argument opcije nije valjan.

EINTR

ako WNOHANG nije bio postavljen i neoblaćen je signal ili SIGCHLD uhvaćen.