NOM
exit - Terminer normalement un processus
SYNOPSIS
#include <stdlib.h>
void exit(int status);
La fonction exit() termine normalement un processus et la valeur status
& 0377 est envoyée au processus parent (voyez wait(2)).
Toutes les fonctions enregistrées avec atexit(3) et on_exit(3) sont
appelé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 lors de la procédure
de terminaison ; le nouvel enregistrement est ajouté au début de la
liste des fonctions à appeler. Si l’une de ces fonctions ne rend pas la
main (par exemple, car elle appelle _exit(2) ou se tue avec un signal),
alors aucune des fonctions suivantes de la liste n’est exécutée et le
processus de terminaison est abandonné (en particulier, le vidage des
flux stdio(3)). Si une fonction a été enregistrée plusieurs fois avec
atexit(3) ou on_exit(3), alors elle sera appelée aussi souvent qu’elle
a été enregistrée.
Tous les flux ouverts du type stdio(3) sont vidés et fermés. Les
fichiers créés par tmpfile(3) sont supprimés.
Le standard C spécifie deux constantes symboliques EXIT_SUCCESS et
EXIT_FAILURE qui peuvent être passées à exit() pour indiquer
respectivement une terminaison sans ou avec échec.
VALEUR RENVOYÉE
La fonction exit() ne revient jamais.
CONFORMITÉ
SVr4, BSD 4.3, POSIX.1-2001, C89, C99
NOTES
Le résultat est indéfini si l’une des fonctions enregistrées avec
atexit(3) et on_exit(3) appelle exit() ou longjmp(3).
L’utilisation d’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, voyez le fichier
<sysexits.h>.
Après 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 d’un octet),
que le processus père pourra consulter ultérieurement grâce à l’une des
fonctions 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 de ce terminal reçoit un signal
SIGHUP, et le terminal est dissocié de cette session, lui permettant
d’être 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 de ce groupe vont recevoir SIGHUP suivi de SIGCONT.
Voir setpgid(2) pour plus d’informations sur les processus orphelins.
VOIR AUSSI
_exit(2), setpgid(2), wait(2), atexit(3), on_exit(3), tmpfile(3)
COLOPHON
Cette page fait partie de la publication 3.23 du projet man-pages
Linux. Une description du projet et des instructions pour signaler des
anomalies peuvent être trouvées à l’adresse
http://www.kernel.org/doc/man-pages/.
TRADUCTION
Cette page de manuel a été traduite et mise à jour par Christophe
Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis par
Alain Portal <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et mise à
disposition sur http://manpagesfr.free.fr/.
Les mises à jour et corrections de la version présente dans Debian sont
directement gérées par Florentin Duneau <fduneau@gmail.com> et l’équipe
francophone de traduction de Debian.
Veuillez signaler toute erreur de traduction en écrivant à
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce document
en utilisant la commande « man -L C <section> <page_de_man> ».