Loading

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