Skip to main content

Vänta - Linux Command - Unix Command

Linux Tip | 10 Useful Linux Commands (April 2025)

Linux Tip | 10 Useful Linux Commands (April 2025)
Anonim

namn

vänta, vänta - vänta på processavslutning

Synopsis

#inkludera #inkludera

pid_t vänta (int * status );pid_t waitpid (pid_t pid , int * status , int alternativ );

Beskrivning

Devänta funktionen avbryter genomförandet av den aktuella processen tills ett barn har gått ut, eller tills en signal har avgivits vars åtgärd är att avsluta den aktuella processen eller att ringa en signalhanteringsfunktion. Om ett barn redan har slutat vid samtalstidpunkten (en så kallad "zombie" -process) returnerar funktionen omedelbart. Eventuella systemresurser som används av barnet befrias.

Dewaitpid funktionen avbryter utförandet av den aktuella processen tills ett barn som anges av pid Argumentet har gått ut, eller tills en signal har avgivits vars åtgärd är att avsluta den aktuella processen eller att ringa en signalhanteringsfunktion. Om ett barn efterfrågas av pid har redan slutat vid samtalstidpunkten (en så kallad "zombie" -process) returnerar funktionen omedelbart. Eventuella systemresurser som används av barnet befrias.

Värdet av pid kan vara en av:

< -1

vilket innebär att vänta på vilken barnprocess vars processgrupps-ID är lika med det absoluta värdet av pid .

-1

vilket innebär att vänta på någon barnprocess Detta är samma beteende somvänta utställningar.

0

vilket innebär att vänta på alla barnprocesser vars processgrupps-ID är lika med samtalsprocessen.

> 0

vilket innebär att vänta på barnet vars process ID är lika med värdet av pid .

Värdet av alternativ är en OR av noll eller flera av följande konstanter:

WNOHANG

vilket innebär att återvända omedelbart om inget barn har gått ut.

WUNTRACED

vilket innebär att även återvända till barn som är stoppade och vars status inte har rapporterats.

(För Linux-bara alternativ, se nedan.)

Om status är inteNULL, vänta ellerwaitpid lagra statusinformation i den plats som anges av status .

Denna status kan utvärderas med följande makron (dessa makron tar statbufferten (anint) som ett argument --- inte en pekare till bufferten!):

WIFEXITED ( status )

är icke-noll om barnet lämnar sig normalt.

WEXITSTATUS ( status )

utvärderar till minst signifikanta åtta bitarna i returkoden för barnet som avslutades, vilket kan ha ställts som argumentet för ett samtal tillutgång() eller som argumentet för a lämna tillbaka uttalande i huvudprogrammet. Detta makro kan endast utvärderas omWIFEXITEDreturnerade icke-noll.

WIFSIGNALED ( status )

returnerar sant om barnprocessen försvann på grund av en signal som inte fångades.

WTERMSIG ( status )

returnerar numret på signalen som orsakade barnprocessen att avslutas. Detta makro kan endast utvärderas omWIFSIGNALED returnerade icke-noll.

WIFSTOPPED ( status )

returnerar sant om barnprocessen som orsakade avkastningen för närvarande är stoppad; Detta är endast möjligt om samtalet gjordes medWUNTRACED.

WSTOPSIG ( status )

returnerar numret på signalen som orsakade barnet att stanna. Detta makro kan endast utvärderas omWIFSTOPPED returnerade icke-noll.

Vissa versioner av Unix (t.ex. Linux, Solaris, men inte AIX, SunOS) definierar också ett makroWCOREDUMP ( status ) för att testa om barnprocessen dumpade kärnan. Använd endast detta bifogade i #ifdef WCOREDUMP … #if.

Returvärde

Processens ID för barnet som avslutat, eller noll omWNOHANG användes och inget barn var tillgängligt, eller -1 på fel (i vilket fall Felkod är inställt på ett lämpligt värde).

fel

ECHILD

om processen som anges i pid existerar inte eller är inte ett barn i anropsprocessen. (Detta kan hända för ditt eget barn om åtgärden för SIGCHLD är inställd på SIG_IGN. Se även avsnittet LINUX NOTES om trådar.)

EINVAL

om alternativ argumentet var ogiltigt.

EINTR

omWNOHANG var inte inställd och en obelastad signal eller aSIGCHLD blev fångad.