Skip to main content

Așteptați - Comandamentul Linux - Comandamentul Unix

Linux Tutorial for Beginners: Introduction to Linux Operating System (Aprilie 2025)

Linux Tutorial for Beginners: Introduction to Linux Operating System (Aprilie 2025)
Anonim

Nume

așteptați, waitpid - așteptați terminarea procesului

Rezumat

#include #include

pid_t așteptați (int * stare );pid_t waitpid (pid_t pid , int * stare , int Opțiuni );

Descriere

aștepta funcția suspendă executarea procesului curent până la ieșirea unui copil sau până la primirea unui semnal al cărui acțiune este de a termina procesul curent sau de a apela o funcție de manipulare a semnalelor. Dacă un copil a ieșit deja din timpul apelului (așa-numitul proces "zombie"), funcția revine imediat. Orice resurse de sistem folosite de copil sunt eliberate.

waitpid funcția suspendă executarea procesului actual până la un copil specificat de pid argumentul a ieșit sau până când este emis un semnal al cărui acțiune este de a termina procesul curent sau de a apela o funcție de manipulare a semnalelor. Dacă copilul a cerut pid a ieșit deja de timpul apelului (așa-numitul proces "zombie"), funcția revine imediat. Orice resurse de sistem folosite de copil sunt eliberate.

Valoarea a pid poate fi una dintre:

< -1

ceea ce înseamnă să așteptați orice proces copil al cărui ID grup de proces este egal cu valoarea absolută a lui pid .

-1

ceea ce înseamnă să aștepți orice proces copil; acesta este același comportament careaștepta exponate.

0

ceea ce înseamnă să așteptați orice proces copil al cărui ID de grup de proces este egal cu cel al procesului de apelare.

> 0

ceea ce înseamnă să aștepți copilul al cărui ID de proces este egal cu valoarea lui pid .

Valoarea a Opțiuni este un OR de zero sau mai multe dintre următoarele constante:

WNOHANG

ceea ce înseamnă să se întoarcă imediat dacă nici un copil nu a ieșit.

WUNTRACED

ceea ce înseamnă returnarea, de asemenea, a copiilor care sunt opriți și a căror statut nu a fost raportat.

(Pentru opțiunile numai pentru Linux, consultați mai jos.)

Dacă stare nu esteNUL, aștepta sauwaitpid stochează informațiile despre starea în locația la care se face referire stare .

Această stare poate fi evaluată cu ajutorul următoarelor macrocomenzi (aceste macrocomenzi iau bufferul stat (anint) ca argument --- nu un pointer la tampon!):

WIFEXITED ( stare )

este diferită de zero dacă copilul a ieșit în mod normal.

WEXITSTATUS ( stare )

se evaluează la cel mai puțin semnificativ opt biți din codul de returnare al copilului care a încetat, care poate fi stabilit ca argument pentru un apel cătreIeșire() sau ca argument pentru un întoarcere în programul principal. Această macrocomandă poate fi evaluată numai dacăWIFEXITEDa revenit la zero.

WIFSIGNALED ( stare )

returnează adevărat dacă procesul copilului a ieșit din cauza unui semnal care nu a fost prins.

WTERMSIG ( stare )

returnează numărul semnalului care a determinat terminarea procesului copilului. Această macrocomandă poate fi evaluată numai dacăWIFSIGNALED a revenit la zero.

WIFSTOPPED ( stare )

returnează adevărat dacă procesul copil care a provocat returnarea este în prezent oprit; acest lucru este posibil numai dacă apelul a fost făcut folosindWUNTRACED.

WSTOPSIG ( stare )

returnează numărul semnalului care a determinat oprirea copilului. Această macrocomandă poate fi evaluată numai dacăWIFSTOPPED a revenit la zero.

Unele versiuni de Unix (de exemplu, Linux, Solaris, dar nu AIX, SunOS) definesc de asemenea o macrocomandăWCOREDUMP ( stare ) pentru a testa dacă procesul copilului nu a făcut obiectul unui dumping. Utilizați acest lucru numai în #ifdef WCOREDUMP … #endif.

Valoare returnată

Identificarea procesului copilului care a ieșit, sau zero dacăWNOHANG a fost utilizat și niciun copil nu era disponibil sau -1 pentru eroare (caz în care errno este setat la o valoare corespunzătoare).

Erori

ECHILD

dacă procesul specificat în pid nu există sau nu este un copil al procesului de chemare. (Acest lucru se poate întâmpla pentru copilul propriu dacă acțiunea pentru SIGCHLD este setată la SIG_IGN. Vezi și secțiunea LINUX NOTES despre fire.)

EINVAL

dacă Opțiuni argumentul a fost nevalid.

EINTR

dacăWNOHANG nu a fost setat și un semnal deblocat sau aSIGCHLD a fost prins.