WAIT(2)

NOM
wait, waitpid - Attendre la fin d'un processus.

SYNOPSIS
#include <sys/types.h>
#include <sys/wait.h>

pid_t wait(int *status)
pid_t waitpid(pid_t pid, int *status, int options);

DESCRIPTION
La fonction wait suspend l'execution du processus courant jusqu'a ce qu'un enfant se termine, ou jusqu'a ce qu'un signal a intercepter arrive. Si un processus fils s'est deja termine au moment de l'appel (il est devenu "zombie"), la fonction retourne immediatement. Toutes les ressources utilisees par le fils sont liberees. La fonction waitpid suspend l'execution du processus courant jusqu'a ce que le processus fils numero pid se termine, ou jusqu'a ce qu'un signal a intercepter arrive. Si le fils mentionne par pid s'est deja termine au moment de l'appel (il est devenu "zombie"), la fonction retourne immediatement. Toutes les ressources utilisees par le fils sont liberees. La valeur de pid peut egalement etre l'une des suivantes :

< -1
    attendre la fin de n'importe quel processus fils appartenant a un groupe de processus d'ID pid.

-1  attendre la fin de n'importe quel fils. C'est le meme comportement que wait.

0   attendre la fin de n'importe quel processus fils du meme groupe que l'appelant.

> 0 attendre la fin du processus numero pid.

La valeur de l'argument option options est un OU binaire entre les constantes suivantes :

WNOHANG
    ne pas bloquer si aucun fils ne s'est termine.

WUNTRACED
    recevoir l'information concernant egalement les fils bloque si on ne l'a pas encore recue.

Si status est non NULL, wait et waitpid y stocke l'information sur la terminaison du fils. Cette information peut etre analysee avec les macros suivantes, qui reclament en argument le buffer status (un int, et non pas un pointeur sur ce buffer).

WIFEXITED(status)
    non nul si le fils s'est termine normalement

WEXITSTATUS(status)
    donne le code de retour tel qu'il a ete mentionne dans l'appel exit() ou dans le return de la routine main. Cette macro ne peut etre evaluee que si WIFEXITED est non nul.

WIFSIGNALED(status)
    indique que le fils s'est termine a cause d'un signal non intercepte.

WTERMSIG(status)
    donne le nombre de signaux qui ont cause la fin du fils. Cette macro ne peut etre evaluee que si WIFSIGNALED est non nul.

WIFSTOPPED(status)
    indique que le fils est actuellement arrete. Cette macro n'a de sens que si l'on a effectue l'appel avec l'option WUNTRACED.

WSTOPSIG(status)
    donne le nombre de signaux qui ont cause l'arret du fils. Cette macro ne peut etre evaluee que si WIFSTOPPED est non nul.

VALEUR RENVOYEE
En cas de reussite, le PID du fils qui s'est termine est renvoye, en cas d'echec -1 est renvoye et errno contient le code d'erreur.

ERREURS

ECHILD
    Le processus indique par pid n'existe pas, ou n'est pas un fils du processus appelant.

EINVAL
    L'argument options est invalide.

ERESTARTSYS
    WNOHANG n'est pas indique, et un signal a intercepter ou SIGCHLD a ete recu. Cette erreur est renvoyee par l'appel systeme. La routine de bibliotheque d'interface n'est pas autorisee a renvoyer ERESTARTSYS, mais renverra EINTR.

CONFORMITE
SVr4, POSIX.1

VOIR AUSSI
signal(2), wait4(2), signal(7)