Uzziniet Linux komandu - gaidiet

Nosaukums

pagaidiet, waitpid - gaidiet procesa izbeigšanu

Kopsavilkums

#include
#include

pid_t gaidīt (int * statuss );
pid_t waitpid (pid_t pid , int * status , int varianti );

Apraksts

Gaidīšanas funkcija aptur pašreizējā procesa izpildi, kamēr bērns ir iziets, vai līdz brīdim, kad tiek piegādāts signāls, kura darbība ir pārtraukt pašreizējo procesu vai izsaukt signālu apstrādes funkciju. Ja bērns jau ir izgājis līdz zvana brīdim (tā saucamais "zombiju" process), funkcija atgriežas uzreiz. Jebkādi sistēmas resursi, kurus izmanto bērns, ir atbrīvoti.

The waitbit funkcija aptur pašreizējā procesa izpildi, līdz brīdim, kad bērnam, kā norādīts pid arguments, ir iziets, vai līdz tiek piegādāts signāls, kura darbība ir pārtraukt pašreizējo procesu vai izsaukt signāla apstrādes funkciju. Ja bērns, kā to pieprasa pid, jau ir iziets līdz zvana brīdim (tā saucamais "zombiju" process), funkcija atgriežas nekavējoties. Jebkādi sistēmas resursi, kurus izmanto bērns, ir atbrīvoti.

PID var būt viens no:

<-1

kas nozīmē gaidīt jebkuru bērnu procesu, kura procesa grupas ID ir vienāds ar pid absolūto vērtību.

-1

kas nozīmē gaidīt jebkuru bērnu procesu; tā ir tāda pati uzvedība, kas gaida eksponātus.

0

kas nozīmē, ka jāgaida kāds bērna process, kura procesa grupas ID ir vienāds ar izsaucēja procesa darbību.

> 0

kas nozīmē gaidīt bērnu, kura procesa ID ir vienāds ar pid vērtību.

Opciju vērtība ir OR ar nulli vai vairāk no šādām konstantēm:

WNOHANG

kas nozīmē atgriezties uzreiz, ja neviens bērns nav iziets.

WUNTRACED

kas nozīmē arī atgriezties bērniem, kuri apstājas, un par kuru statusu nav ziņots.

(Par Linux tikai opcijām skatiet tālāk.)

Ja statuss nav NULL , pagaidiet vai waitpid saglabājiet statusa informāciju atrašanās vietā, uz kuru norāda statuss .

Šo statusu var novērtēt ar sekojošiem makro (šie makro ņemt stat buferi ( int ) kā argumentu --- nav rādītājs uz buferi!):

WIFEXITED ( statuss )

ir nulle, ja bērns parasti izietu.

WEXITSTATUS ( statuss )

tiek vērtēts vismazāk nozīmīgajā apturētā bērna atgriešanās koda astoņos bitiem, kas, iespējams, ir iestatīts kā arguments iziešanai no izsaukuma () vai argumentam par atgriešanās paziņojumu galvenajā programmā. Šo makro var novērtēt tikai tad, ja WIFEXITED atgrieztos bez nulles.

WIFSIGNALED ( statuss )

atgriež patiess, ja bērna process iziet signāla dēļ, kas nav nozvejots.

WTERMSIG ( statuss )

atgriež signāla numuru, kas izraisīja bērna procesa izbeigšanos. Šo makro var novērtēt tikai tad, ja WIFSIGNALED atgrieztos bez nulles.

WIFSTOPPED ( statuss )

atgriež patiess, ja bērna process, kas izraisīja atgriešanos, pašlaik tiek apturēts; tas ir iespējams tikai tad, ja zvans tika veikts, izmantojot WUNTRACED .

WSTOPSIG ( statuss )

atgriež signāla numuru, kas izraisīja bērna apstāšanos. Šo makro var novērtēt tikai tad, ja WIFSTOPPED ir atgriezies bez nulles.

Dažās Unix versijās (piemēram, Linux, Solaris, bet ne AIX, SunOS) arī tiek definēts makro WCOREDUMP ( statuss ), lai pārbaudītu, vai bērns apstrādā dempinga kodolu. Izmantojiet tikai to, kas iekļauts #ifdef WCOREDUMP ... #endif.

Atgriešanās vērtība

Izstājušā bērna procesa ID vai nulle, ja WNOHANG tika izmantots, un neviens bērns nebija pieejams, vai -1 pēc kļūdas (šādā gadījumā errno ir iestatīts uz atbilstošu vērtību).

Kļūdas

ECHILD

ja process, kas norādīts pid nepastāv vai nav izsaukšanas procesa bērns. (Tas var notikt ar savu bērnu, ja SIGCHLD darbība ir iestatīta uz SIG_IGN. Skatiet arī sadaļu LINUX NOTES par tēmām.)

EINVAL

ja opciju arguments ir nederīgs.

EINTR

ja WNOHANG nebūtu iestatīts un netika bloķēts signāls vai SIGCHLD tika nozvejotas.