Saznajte Linux Command - sačekajte

Ime

čekajte, čekajte - čekajte za završetak procesa

Sinopsis

#include
#include

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

Opis

Funkcija čekanja suspenduje izvršenje tekućeg procesa sve dok dijete ne izađe, ili dok se ne dostavi signal čija akcija će prekinuti trenutni proces ili pozvati funkciju prijenosa signala. Ako je dete već izašlo do vremena poziva (takozvani proces "zombi"), funkcija se odmah vraća. Svaki sistemski resurs koji koristi dete se oslobađa.

Funkcija waitpid- a suspenduje izvršavanje tekućeg procesa sve dok dete ne odredi pid- argument nije izašao, ili dok se ne dostavi signal čija akcija završava trenutni proces ili pozove funkciju prijenosa signala. Ako dete, kao što je zatraženo od strane pid-a , već izašlo do vremena poziva (takozvani proces "zombi"), funkcija se odmah vraća. Svaki sistemski resurs koji koristi dete se oslobađa.

Vrednost PID-a može biti jedna od:

<-1

što znači da čeka bilo koji dečiji proces čiji je ID grupe procesa jednak apsolutnoj vrijednosti pid-a .

-1

što znači da čeka bilo koji dečiji proces; ovo je isto ponašanje koje čeka eksponate.

0

što znači da čeka bilo koji dečiji proces čiji je ID procesa procesa jednak onom u procesu poziva.

> 0

što znači da čeka dijete čiji je ID procesa jednak vrijednosti pid-a .

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

WNOHANG

što znači da se odmah vrati ako nijedno dete ne izađe.

WUNTRACED

što znači da se takođe vraćaju za decu koja su zaustavljena i čiji status nije prijavljen.

(Za Linux-ove opcije, pogledajte dole.)

Ako status nije NULL , sačekajte ili čekajte da sačuvate informacije o statusu na lokaciji koju ukazuje status .

Ovaj status se može procijeniti s sljedećim makroima (ovi makroi uzimaju stat buffer ( int ) kao argument --- ne pokazivač ka puferu!):

WIFEXITED ( status )

je nula ako dijete napusti normalno.

WEXITSTATUS ( status )

procenjuje najmanje važne osam bita povratnog koda djeteta koje je prekinuto, što je možda bilo postavljeno kao argument za poziv za izlaz () ili kao argument za povratnu izjavu u glavnom programu. Ovaj makro se može proceniti samo ako je WIFEXITED vratio nula.

WIFSIGNALED ( status )

vraća true ako je dečiji proces izašao zbog signala koji nije bio uhvaćen.

WTERMSIG ( status )

vraća broj signala koji su doveli do prekida dječjeg procesa. Ovaj makro se može proceniti samo ako je WIFSIGNALED vratio nula.

WIFSTOPPED ( status )

vraća true ako je dečiji proces koji je uzrokovao povratak trenutno zaustavljen; ovo je moguće samo ako je poziv obavljen koristeći WUNTRACED .

WSTOPSIG ( status )

vraća broj signala koji je doveo do prestanka deteta. Ovaj makro se može proceniti samo ako se WIFSTOPPED vrati nula.

Neke verzije Unix-a (npr. Linux, Solaris, ali ne i AIX, SunOS) takođe definišu makro WCOREDUMP ( status ) da bi testirali da li je dječji proces odbacio jezgro. Koristite samo ovo u #ifdef WCOREDUMP ... #endif.

Povratna vrijednost

Identifikacioni broj deteta koji je izašao ili nula ako je korišten WNOHANG i nije bilo dijete bilo je dostupno, ili -1 na grešku (u tom slučaju errno je postavljena na odgovarajuću vrijednost).

Greške

ECHILD

ako je proces naveden u PID ne postoji ili nije dete procesa pozivanja. (Ovo može da se desi za svoje dijete ako je akcija za SIGCHLD postavljena na SIG_IGN. Takođe pogledajte odeljak LINUX NOTES za teme.)

EINVAL

ako je argument opcije neveljavan.

EINTR

ako WNOHANG nije podešen i deblokiran signal ili SIGCHLD je uhvaćen.