Manpages

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 aanroep 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.

EIND WAARDE

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 {onderbroken} 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.

VOLDOET AAN

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 [AT] nl.org>.

$Id: waitpid.2,v 1.1.1.1 2004/03/21 21:02:25 cor Exp $