EXIT

Section : Manuel du programmeur Linux (3)
Mise à jour de la version anglaise : 12 juin 2007
Index Menu principal  

NOM

exit - Terminer normalement un processus  

SYNOPSIS

#include <stdlib.h>

void exit(int status);
 

DESCRIPTION

La fonction exit() termine normalement le processus et la valeur status & 0377 est renvoyée au processus parent. (voir wait(2)). Toutes les fonctions enregistrées avec atexit(3) et on_exit(3) sont invoquées dans l'ordre inverse de leur enregistrement. (Il est possible pour l'une de ces fonctions d'utiliser atexit(3) ou on_exit(3) pour enregistrer une fonction supplémentaire à exécuter pendant le processus de terminaison ; le nouvel enregistrement est ajouté au début de la liste des fonctions qu'il reste à appeler.) Si l'une de ces fonctions ne revient pas (par exemple, elle appelle _exit(2), ou se tue elle-même avec un signal), aucune des fonctions restantes n'est appelée, et le processus de terminaison (en particulier le vidage des flux stdio(3)) est abandonné. Si une fonction a été enregistrée plusieurs fois avec atexit(3) ou on_exit(3), elle est appelée autant de fois qu'elle a été enregistrée.

Tous les flux ouverts de type stdio(3) sont vidés et fermés. Les fichiers créés par tmpfile(3) sont supprimés.

Le standard C mentionne deux constantes symboliques EXIT_SUCCESS et EXIT_FAILURE qui peuvent être passées à exit() pour indiquer respectivement une terminaison en succès ou en échec.  

VALEUR RENVOYÉE

La fonction exit() ne revient jamais.  

CONFORMITÉ

SVr4, BSD 4.3, POSIX.1-2001, C89, C99.  

NOTES

Le comportement est indéfini si l'une des fonctions enregistrées avec atexit(3) ou on_exit(3) invoque exit() ou longjmp(3).

L'utilisation de EXIT_SUCCESS et EXIT_FAILURE est légèrement plus portable (vers des environnements non Unix) que celle de zéro et d'une valeur non nulle comme 1 ou -1. En particulier, le système VMS utilise une convention différente.

BSD a tenté de standardiser les codes de sortie, voir le fichier <sysexits.h>.

Après un exit(), le code de retour doit être transmis au processus parent. Il y a trois cas. Si le parent a défini SA_NOCLDWAIT ou s'il a défini le comportement de SIGCHLD à SIG_IGN, le code de retour est ignoré. Si le père était en attente de la fin de son fils, il reçoit le code de retour. Dans ces deux cas, le fils meurt immédiatement. Si le parent n'est pas en attente, mais n'a pas indiqué qu'il désire ignorer le code de retour, le processus fils devient un processus « zombie ». Ce n'est rien d'autre qu'une coquille enveloppant le code de retour, que le processus père pourra consulter ultérieurement grâce à l'une des fonctions de la famille wait(2).

Si l'implémentation supporte le signal SIGCHLD, celui-ci est envoyé au processus père. Si le père a défini SA_NOCLDWAIT, il n'est pas précisé si SIGCHLD est envoyé ou non.

Si le processus est un leader de session, et si son terminal de contrôle est le terminal de la session, alors chaque processus du groupe de processus en avant-plan sur ce terminal reçoit un signal SIGHUP, et le terminal est dissocié de la session, lui permettant d'être réacquis par un nouveau processus de contrôle.

Si la fin du processus rend orphelin un groupe de processus, et si certains membres de ce groupe nouvellement orphelin sont arrêtés, alors tous les processus du groupe vont recevoir SIGHUP suivi de SIGCONT.  

VOIR AUSSI

_exit(2), wait(2), atexit(3), on_exit(3) tmpfile(3)  

TRADUCTION

Ce document est une traduction réalisée par Christophe Blaess <http://www.blaess.fr/christophe/> le 23 octobre 1996 et révisée le 17 juillet 2008.

L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 3 exit ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.

 

Index

NOM
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
CONFORMITÉ
NOTES
VOIR AUSSI
TRADUCTION

Dernière mise à jour : 17 juillet 2008