WAIT4
Section: Manuel du programmeur Linux (2) Updated: 18 juillet 2003 Index
NOM
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ERREURS
NOTE
CONFORMITÉ
VOIR AUSSI
TRADUCTION
NOM
wait3, wait4 - Attendre la fin d'un processus - Style BSD.
SYNOPSIS
#include <sys/types.h>
#include <sys/time.h>
#include <sys/resource.h>
#include <sys/wait.h>
pid_t wait3(int *status, int options,
struct rusage *rusage);
pid_t wait4(pid_t pid, int *status, int options,
struct rusage *rusage);
DESCRIPTION
La fonction
wait3
suspend l'exécution du processus courant jusqu'à ce qu'un enfant
se termine, ou jusqu'à ce qu'un signal à intercepter arrive.
Si un processus fils s'est déjà terminé au moment de l'appel
(il est devenu "zombie"), la fonction revient immédiatement.
Toutes les ressources utilisées par le fils sont libérées.
La fonction
wait4
suspend l'exécution du processus courant jusqu'à ce que le
processus fils numéro
pid
se termine, ou jusqu'à ce qu'un signal à intercepter arrive.
Si le fils mentionné par
pid
s'est déjà terminé au moment de l'appel
(il est devenu "zombie"), la fonction revient immédiatement.
Toutes les ressources utilisées par le fils sont libérées.
La valeur de
pid
peut également être l'une des suivantes :
- < -1
-
attendre la fin de n'importe quel processus fils
appartenant à un groupe de processus d'ID
pid.
- -1
-
attendre la fin de n'importe quel fils. C'est le même
comportement que
wait3.
- 0
-
attendre la fin de n'importe quel processus fils du même groupe
que l'appelant.
- > 0
-
attendre la fin du processus numéro
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 terminé.
- WUNTRACED
-
recevoir l'information concernant également les fils bloqués
si on ne l'a pas encore reçue.
Si
status
est non
NULL,
wait3
et
wait4
y stockent l'information sur la terminaison du fils.
Cette information peut être analysée avec les macros suivantes,
qui prennent en argument le buffer
status
(un int et non pas un pointeur sur le buffer).
- WIFEXITED(status)
-
non nul si le fils s'est terminé normalement
- WEXITSTATUS(status)
-
donne le code de retour tel qu'il a été mentionné dans l'appel
exit()
ou dans le
return
de la routine
main.
Cette macro ne peut être évaluée que si
WIFEXITED
est non nul.
- WIFSIGNALED(status)
-
indique que le fils s'est terminé à cause d'un signal non
intercepté.
- WTERMSIG(status)
-
donne le numéro du signal qui a causé la fin du fils. Cette
macro ne peut être évaluée que si
WIFSIGNALED
est non nul.
- WIFSTOPPED(status)
-
indique que le fils est actuellement arrêté. Cette macro n'a de
sens que si l'on a effectué l'appel avec l'option
WUNTRACED.
- WSTOPSIG(status)
-
donne le numéro du signal qui a causé l'arrêt du fils. Cette macro
ne peut être évaluée que si
WIFSTOPPED
est non nul.
Si
rusage
n'est pas
NULL,
La structure
rusage
définie dans
<sys/resource.h>
sera remplie avec les informations de comptabilité. Voir
getrusage(2)
Pour plus de détails.
VALEUR RENVOYÉE
En cas de réussite, le PID du fils qui s'est terminé est renvoyé,
en cas d'échec -1 est renvoyé et
errno
contient le code d'erreur.
ERREURS
- ECHILD
-
Le processus indiqué par
pid
n'existe pas, ou n'est pas un fils du processus appelant.
- EINTR
-
WNOHANG
n'est pas indiqué, et un signal à intercepter ou
SIGCHLD
a été reçu.
NOTE
L'inclusion de
<sys/time.h>
n'est plus obligatoire, mais améliore la portabilité.
(En fait,
<sys/resource.h>
définit la structure
rusage
qui contient des champs de type
struct timeval
définis dans
<sys/time.h>).
Les prototypes de ces fonctions ne sont disponibles que si la constante
_BSD_SOURCE
est définie (soit explicitement, ou implicitement en ne définissant par
_POSIX_SOURCE ou en compilant avec l'option -ansi).
CONFORMITÉ
SVr4, POSIX.1
VOIR AUSSI
TRADUCTION
Christophe Blaess, 1996-2003.
|