Skip to main content

Wacht - Linux Command - Unix Command

linux opdracht 5 (Juni- 2026)

linux opdracht 5 (Juni- 2026)
Anonim

Naam

wacht, wacht even - wacht op procesbeëindiging

Korte inhoud

#include #include

pid_t wacht (int * staat );pid_t waitpid (pid_t pid , int * staat , int opties );

Omschrijving

DeWacht functie schort de uitvoering van het huidige proces op totdat een kind is gestopt, of totdat een signaal wordt afgeleverd waarvan de actie is om het huidige proces te beëindigen of om een ​​signaalverwerkingsfunctie aan te roepen. Als een kind al is verlaten op het moment van de oproep (een zogenaamd "zombie" -proces), keert de functie onmiddellijk terug. Alle systeembronnen die door het kind worden gebruikt, zijn bevrijd.

Dewaitpid functie schort de uitvoering van het huidige proces op totdat een kind zoals gespecificeerd door de pid argument is verlaten of totdat een signaal wordt afgeleverd waarvan de actie is om het huidige proces te beëindigen of om een ​​signaalverwerkingsfunctie aan te roepen. Als een kind zoals gevraagd door pid is al verlaten op het moment van de oproep (een zogenaamd "zombie" -proces), de functie keert onmiddellijk terug. Alle systeembronnen die door het kind worden gebruikt, zijn bevrijd.

De waarde van pid kan een van zijn:

< -1

wat betekent wachten op elk kindproces waarvan de procesgroep ID gelijk is aan de absolute waarde van pid .

-1

wat betekent wachten op een kindproces; dit is hetzelfde gedrag datWacht vertoont.

0

wat betekent wachten op elk kindproces waarvan de procesgroep-ID gelijk is aan dat van het oproepproces.

> 0

wat betekent wachten op het kind wiens proces-ID gelijk is aan de waarde van pid .

De waarde van opties is een OF van nul of meer van de volgende constanten:

WNOHANG

wat betekent om onmiddellijk terug te keren als geen kind is vertrokken.

WUNTRACED

wat betekent om ook terug te keren voor kinderen die zijn gestopt en waarvan de status niet is gemeld.

(Alleen voor Linux-opties, zie hieronder.)

Als staat is nietNUL, Wacht ofwaitpid winkelstatusinformatie op de locatie aangeduid door staat .

Deze status kan worden geëvalueerd met de volgende macro's (deze macro's nemen de stat-buffer (eenint) als argument - geen verwijzing naar de buffer!):

WIFEXITED ( staat )

is niet nul als het kind normaal wordt verlaten.

WEXITSTATUS ( staat )

evalueert de minst significante acht bits van de retourcode van het kind dat is beëindigd, mogelijk ingesteld als argument voor een oproep naarUitgang() of als het argument voor een terugkeer verklaring in het hoofdprogramma. Deze macro kan alleen worden geëvalueerd alsWIFEXITEDgeretourneerd niet-nul.

WIFSIGNALED ( staat )

geeft true terug als het onderliggende proces is afgesloten vanwege een signaal dat niet is gepakt.

WTERMSIG ( staat )

retourneert het nummer van het signaal dat het onderliggende proces heeft beëindigd. Deze macro kan alleen worden geëvalueerd alsWIFSIGNALED geretourneerd niet-nul.

WIFSTOPPED ( staat )

geeft true terug als het onderliggende proces dat de retourzending heeft veroorzaakt, momenteel wordt gestopt; dit is alleen mogelijk als de oproep is gedaan metWUNTRACED.

WSTOPSIG ( staat )

retourneert het nummer van het signaal waardoor het kind is gestopt. Deze macro kan alleen worden geëvalueerd alsWIFSTOPPED geretourneerd niet-nul.

Sommige versies van Unix (bijvoorbeeld Linux, Solaris, maar niet AIX, SunOS) definiëren ook een macroWCOREDUMP ( staat ) om te testen of het kindproces de kern gedumpt heeft. Gebruik dit alleen in #ifdef WCOREDUMP … #endif.

Winstwaarde

De proces-ID van het kind dat is verlaten, of nul alsWNOHANG werd gebruikt en geen kind beschikbaar was, of -1 op fout (in welk geval errno is ingesteld op een geschikte waarde).

fouten

ECHILD

als het proces gespecificeerd in pid bestaat niet of is geen kind van het oproepproces. (Dit kan gebeuren voor het eigen kind als de actie voor SIGCHLD is ingesteld op SIG_IGN. Zie ook het gedeelte LINUX NOTES over discussies.)

EINVAL

als het opties argument was ongeldig.

EINTR

alsWNOHANG was niet ingesteld en een niet-geblokkeerd signaal of eenSIGCHLD is gepakt.