Provided by:
manpages-nl_20051127-4_all
NAAM
wait, waitpid - wacht op proces beëindiging
OVERZICHT
#include <sys/types.h>
#include <sys/wait.h>
pid_t wait(int *status)
pid_t waitpid(pid_t pid, int *status, int opties);
BESCHRIJVING
De wait systeemaanroep schort het uitvoeren van het huidige proces op
totdat een kind {kind-proces} eindigt of totdat een signaal wordt
afgeleverd die er voor zorgt dat: òf het huidige proces wordt
beëindigd, òf een signaal-behandelaar wordt aangeroepen. Als een kind
al eindigde (met uitvoeren) op het moment van de aanroep (een zogenaamd
‘zombie’ proces) dan keert de aanroep onmiddellijk terug. Alle systeem-
middelen in gebruik door het kind worden vrijgemaakt. De waitpid aan‐
roep schort de uitvoering van het huidige proces op totdat het kind dat
bepaald werd met het pid argument is beëindigd, of totdat een signaal
wordt afgeleverd dat ervoor zorgt dat: het huidige proces wordt
beëindigd, of een signaal behandelaar wordt aangeroepen. Als een kind
al eindigde (met uitvoeren) op het moment van de aanroep (een zogenaamd
"zombie" proces) dan keert de aanroep onmiddellijk terug. Alle systeem-
middelen in gebruik door het kind worden vrijgemaakt.
De waarde van pid kan een van de volgende zijn:
< -1 wat betekend dat er gewacht wordt op elk kind proces van wie de
proces groep ID gelijk is aan de absolute waarde van pid.
-1 wat betekend dat er gewacht wordt op elk kind proces; dit is
hetzelfde gedrag als wait vertoont.
0 wat betekend dat er gewacht wordt op elk kind proces van wie het
proces groep ID gelijk is aan dat van het aanroepende proces.
> 0 wat betekend dat er gewacht wordt op elk kind van wie het proces
ID gelijk is aan de waarde van pid.
De waarde van opties is een OF (incl.) van nul of meer van de volgende
constanten
WNOHANG
{niet hangen} betekend dat er onmiddellijk wordt teruggekeerd
als geen kind beëindigd was.
WUNTRACED
{ongevolgd} betekend dat er ook teruggekeerd wordt voor kinderen
die zijn gestopt, en van wie de status niet gemeld is.
Als status niet NULL is, dan slaan wait of waitpid status informatie
op, op de plaats waar status naar wijst.
Deze status kan beoordeeld worden met de volgende macro’s (deze macro’s
hebben de "stat buffer" (een geheel getal ("int")) als argument — niet
een pointer naar de buffer!):
WIFEXITED(status)
{als beëindigd} is ongelijk-nul als het kind normaal eindigde.
WEXITSTATUS(status)
{eind staat} beoordeeld de minst belangrijke acht bits van de
terugkeer-waarde van het kind dat eindigde, die gezet zouden
kunnen zijn met het argument van een aanroep naar exit() of als
het argument voor een return opdracht in het ‘main’ programma.
Deze macro kan alleen afgehandeld worden als WIFEXITED
ongelijk-nul teruggaf.
WIFSIGNALED(status)
{als sign.} geeft "waar" {ala ja/nee} terug als het proces
eindigde door een signaal dat niet onderschept werd.
WTERMSIG(status)
{eind sign.} geeft het nummer van het signaal dat ervoor zorgde
dat het kind proces eindigde. Deze macro kan alleen afgehandeld
worden als WIFSIGNALED ongelijk-nul teruggaf.
WIFSTOPPED(status)
{als gestopt} geeft "waar" terug als het kind proces dat de
terugkeer veroorzaakte momenteel gestopt is; dit is alleen
mogelijk als de aanroep werd gedaan met WUNTRACED.
WSTOPSIG(status)
{stop sign.} geeft het nummer van het signaal dat ervoor zorgde
dat het kind stopte. Deze macro kan alleen afgehandeld worden
als WIFSTOPPED ongelijk-nul teruggaf.
Het proces ID van het kind dat eindigde, -1 bij een fout of nul als
WNOHANG gebruikt werd en geen kind voorhanden was (in welk geval errno
naar een passende waarde wordt gezet).
FOUTEN
ECHILD {kind} als het proces bepaald in pid, niet bestaat of het geen
kind is van het aanroepende proces. (Dit kan gebeuren voor je
eigen kind als de actie voor SIGCHLD gezet is naar SIG_IGN.)
EINVAL {ongeldig} als het opties argument ongeldig was.
ERESTARTSYS
{herstart} als WNOHANG niet gezet is en een niet-geblokkeerd
signaal of een SIGCHLD gevangen werd. Deze fout wordt
teruggegeven door de systeemaanroep. De bibliotheek interfaces
mogen ERESTARTSYS niet teruggeven, maar zullen EINTR {onderbro‐
ken} geven.
OPMERKINGEN
De "Single Unix Specification" beschrijft een vlag SA_NOCLDWAIT (niet
aanwezig onder Linux) waardoor, als deze vlag is gezet, of de daad voor
SIGCHLD is gezet naar SIG_IGN (wat trouwens niet toegestaan wordt door
POSIX), kinderen die exit aanroepen geen zombies worden, en een aanroep
naar wait() of waitpid() zal blokkeren, totdat alle kinderen geëindigd
zijn, en dan zal falen met errno naar ECHILD gezet.
SVr4, POSIX.1
ZIE
signal(2) {signaal}, wait4(2) {wacht}, signal(7) {signaal}
VERTALING
Dit is een handleiding uit manpages-dev 1.29.
Alles wat tussen ‘{’..‘}’ staat is aanvullende vertaling, en hoort niet
bij de originele handleiding. Email naar <manpages-nl@nl.linux.org>.
$Id: waitpid.2,v 1.1.1.1 2004/03/21 21:02:25 cor Exp $