Skip to main content

Vent - Linux Command - Unix Command

Writing 2D Games in C using SDL by Thomas Lively (Juni 2026)

Writing 2D Games in C using SDL by Thomas Lively (Juni 2026)
Anonim

Navn

vent, ventetid - vent på prosessavslutning

Synopsis

#inkludere #inkludere

pid_t vent (int * status );pid_t waitpid (pid_t pid , int * status , int opsjoner );

Beskrivelse

Devente funksjonen suspenderer utførelsen av den nåværende prosessen til et barn har gått ut, eller til et signal er levert, hvis handling er å avslutte den nåværende prosessen eller for å ringe en signalhåndteringsfunksjon. Hvis et barn allerede har gått ut av samtalen (en såkalt "zombie" -prosess), returnerer funksjonen umiddelbart. Eventuelle systemressurser brukt av barnet er frigjort.

Dewaitpid funksjonen suspenderer kjøring av den nåværende prosessen til et barn som angitt av pid Argumentet er avsluttet, eller til et signal er levert, hvis handling er å avslutte den nåværende prosessen eller å ringe en signalhåndteringsfunksjon. Hvis et barn som ønsket av pid har allerede gått ut av samtalen (en såkalt "zombie" -prosess), returnerer funksjonen umiddelbart. Eventuelle systemressurser brukt av barnet er frigjort.

Verdien av pid kan være en av:

< -1

som betyr å vente på en hvilken som helst barnprosess hvis prosessgruppe ID er lik absoluttverdien av pid .

-1

som betyr å vente på barnprosessen; Dette er den samme oppførselen somvente utstillinger.

0

som betyr å vente på en hvilken som helst barnprosess hvis prosessgruppe-ID er lik det som kalles.

> 0

som betyr å vente på barnet hvis prosess ID er lik verdien av pid .

Verdien av opsjoner er en OR av null eller flere av følgende konstanter:

WNOHANG

som betyr å returnere umiddelbart hvis ingen barn har gått ut.

WUNTRACED

som betyr å også returnere for barn som er stoppet, og hvis status ikke er rapportert.

(For Linux-only alternativer, se nedenfor.)

Hvis status er ikkeNULL, vente ellerwaitpid lagre statusinformasjon på stedet som er pekt på status .

Denne statusen kan evalueres med følgende makroer (disse makroene tar statbufferen (enint) som et argument --- ikke en peker til bufferen!):

WIFEXITED ( status )

er ikke null hvis barnet utgå normalt.

WEXITSTATUS ( status )

evaluerer til minst signifikante åtte biter av returkoden til barnet som avsluttet, som kan ha blitt satt som argumentet til et anrop tilexit() eller som argumentet for a komme tilbake uttalelse i hovedprogrammet. Denne makroen kan bare evalueres hvisWIFEXITEDreturnerte ikke-null.

WIFSIGNALED ( status )

returnerer sant hvis barnprosessen avsluttet på grunn av et signal som ikke ble fanget.

WTERMSIG ( status )

returnerer nummeret på signalet som forårsaket barnet prosessen å avslutte. Denne makroen kan bare evalueres hvisWIFSIGNALED returnerte ikke-null.

WIFSTOPPED ( status )

returnerer sant hvis barneprosessen som forårsaket avkastningen, for øyeblikket er stoppet; Dette er bare mulig hvis samtalen ble gjort medWUNTRACED.

WSTOPSIG ( status )

returnerer nummeret på signalet som fikk barnet til å stoppe. Denne makroen kan bare evalueres hvisWIFSTOPPED returnerte ikke-null.

Noen versjoner av Unix (for eksempel Linux, Solaris, men ikke AIX, SunOS) definerer også en makroWCOREDUMP ( status ) for å teste om barnet prosesserer dumpet kjerne. Bruk bare dette vedlagt i #ifdef WCOREDUMP … #endif.

Returverdi

Prosess ID av barnet som avsluttet, eller null hvisWNOHANG ble brukt og ingen barn var tilgjengelig, eller -1 på feil (i så fall Feilkode er satt til en passende verdi).

feil

ECHILD

hvis prosessen spesifisert i pid eksisterer ikke eller er ikke et barn i anropsprosessen. (Dette kan skje for sitt eget barn hvis handlingen for SIGCHLD er satt til SIG_IGN. Se også LINUX NOTES-delen om tråder.)

EINVAL

hvis opsjoner argumentet var ugyldig.

EINTR

hvisWNOHANG ikke satt og et ulåst signal eller aSIGCHLD ble tatt.