Skip to main content

Pagaidiet - Linux Command - Unix komandu

Anonim

Nosaukums

pagaidiet, waitpid - gaidiet procesa izbeigšanu

Kopsavilkums

#include #include

pid_t gaidīt (int * statuss );pid_t waitpid (pid_t pid , int * statuss , int iespējas );

Apraksts

Thepagaidiet funkcija aptur pašreizējā procesa izpildi, kamēr bērns ir iziets, vai līdz 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.

Thewaitpid funkcija aptur pašreizējā procesa izpildi līdz bērnam, kā noteikts pid arguments ir izslēgts vai līdz tiek nosūtīts signāls, kura darbība ir pārtraukt pašreizējo procesu vai izsaukt signālu apstrādes funkciju. Ja bērns to lūdz pid jau ir iziet no zvana laika (tā saucamais "zombiju" process), funkcija atgriežas nekavējoties. Jebkādi sistēmas resursi, kurus izmanto bērns, ir atbrīvoti.

Vērtība 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 .

-1

kas nozīmē gaidīt jebkuru bērnu procesu; šī ir tā pati uzvedība, kaspagaidiet eksponāti.

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ība iespējas 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 navNULL, pagaidiet vaiwaitpid veikala statusa informāciju atrašanās vietā, uz kuru norāda statuss .

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

WIFEXITED ( statuss )

ir nulle, ja bērns parasti izietu.

WEXITSTATUS ( statuss )

novērtē vismaz tādus astoņus atkārtotā bērna atgriešanās koda astoņus bitus, kuri, iespējams, ir noteikti kā arguments sarunaiIzeja() vai kā arguments par atgriešanās paziņojums galvenajā programmā. Šo makro var novērtēt tikai tad, jaWIFEXITEDatgriezās nullei.

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, jaWIFSIGNALĒTAIS atgriezās nullei.

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, izmantojotWUNTRACED.

WSTOPSIG ( statuss )

atgriež signāla numuru, kas izraisīja bērna apstāšanos. Šo makro var novērtēt tikai tad, jaWIFSTOPPED atgriezās nullei.

Dažas Unix versijas (piemēram, Linux, Solaris, bet ne AIX, SunOS) arī definē makroWCOREDUMP ( statuss ) lai pārbaudītu, vai bērns apstrādā izmešu kodolu. Izmantojiet tikai to, kas iekļauts #ifdef WCOREDUMP … #endif.

Atgriešanās vērtība

Izietā bērna procesa ID vai nulle, jaWNOHANG tika izmantots, un neviens bērns nebija pieejams, vai -1 pēc kļūdas (šādā gadījumā errno ir iestatīta 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 iespējas arguments nav derīgs.

EINTR

jaWNOHANG netika iestatīts un atbloķēts signāls vai aSIGCHLD tika nozvejotas.