Provided by: manpages-fr-dev_4.15.0-9_all bug

NOM

       exit - Terminer normalement un processus

SYNOPSIS

       #include <stdlib.h>

       noreturn void exit(int status);

DESCRIPTION

       La  fonction  exit() termine normalement un processus et l'octet de poids faible de statut
       (c'est-à-dire statut & 0xFF) est envoyé au processus parent (consultez 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 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 qui restent à appeler. Si une de ces fonctions ne rend pas  la  main  (car  elle
       appelle  _exit(2)  ou  se  tue  avec  un  signal  par exemple), 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.

       La norme C spécifie deux constantes 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 renvoie jamais de valeur.

ATTRIBUTS

       Pour une explication des termes utilisés dans cette section, consulter attributes(7).

       ┌────────────────────────────────────────────┬──────────────────────┬─────────────────────┐
       │InterfaceAttributValeur              │
       ├────────────────────────────────────────────┼──────────────────────┼─────────────────────┤
       │exit()                                      │ Sécurité des threads │ MT-Unsafe race:exit │
       └────────────────────────────────────────────┴──────────────────────┴─────────────────────┘

       La  fonction  exit() utilise une variable globale non protégée et n’est donc pas sûre dans
       un contexte multithread.

CONFORMITÉ

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

NOTES

       Le comportement n'est pas défini si une  des  fonctions  enregistrées  avec  atexit(3)  et
       on_exit(3)  appelle  exit()  ou longjmp(3). Remarquez qu'un appel à execve(2) supprime les
       enregistrements créés en utilisant atexit(3) et on_exit(3).

       L'utilisation d'EXIT_SUCCESS et d'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 (que certaines bibliothèques C telles  que
       la bibliothèque C de GNU ont adoptés), consultez le fichier <sysexits.h>.

       Après exit(), le statut doit être transmis au processus parent. Il y a trois cas :

       •  Si le parent a positionné SA_NOCLDWAIT ou a positionné SIGCHLD à SIG_IGN, le statut est
          abandonné et l'enfant meurt immédiatement.

       •  Si le parent attendait l'enfant, il est informé du statut de sortie et  l'enfant  meurt
          immédiatement.

       •  Autrement,  l'enfant  devient  un  processus  « zombie » : la plupart des ressources du
          processus sont réutilisées mais un emplacement contenant les informations minimales  du
          processus enfant (statut de terminaison, statistiques d'utilisation des ressources) est
          conservé dans la table de processus. Cela permet au  parent  d'utiliser  par  la  suite
          waitpid(2)  (ou  similaire)  afin  de  connaître le statut de terminaison de l'enfant ;
          après quoi l'emplacement du processus « zombie » est libéré.

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

   Signaux envoyés à d'autres processus
       Si le processus est un leader de session et si son terminal de contrôle est le terminal de
       contrôle 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 un membre quelconque  de
       ce  groupe  de  processus nouvellement orphelin est arrêté, alors tous les processus de ce
       groupe  vont  recevoir  SIGHUP  suivi  de  SIGCONT.   Consultez   setpgid(2)   pour   plus
       d'informations sur les processus orphelins.

       Mis à part les cas susmentionnés, pour lesquels les processus ayant reçu un signal peuvent
       être des enfants du processus terminé, la terminaison  d'un  processus  ne  cause  pas  en
       général  l'envoi  d'un  signal  aux  enfants de ce processus. Cependant, un processus peut
       utiliser l'opération PR_SET_PDEATHSIG de prctl(2) pour faire en sorte qu'ils reçoivent  un
       signal si le parent se termine.

VOIR AUSSI

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

COLOPHON

       Cette  page  fait partie de la publication 5.13 du projet man-pages Linux. Une description
       du projet et des instructions pour signaler des anomalies et la dernière version de  cette
       page peuvent être trouvées à l'adresse https://www.kernel.org/doc/man-pages/.

TRADUCTION

       La  traduction  française  de  cette  page  de  manuel  a  été créée par Christophe Blaess
       <https://www.blaess.fr/christophe/>, Stéphan  Rafin  <stephan.rafin@laposte.net>,  Thierry
       Vignaud  <tvignaud@mandriva.com>,  François Micaux, Alain Portal <aportal@univ-montp2.fr>,
       Jean-Philippe   Guérard   <fevrier@tigreraye.org>,   Jean-Luc   Coulon   (f5ibh)    <jean-
       luc.coulon@wanadoo.fr>,    Julien    Cristau    <jcristau@debian.org>,    Thomas   Huriaux
       <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin
       Duneau  <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis
       Barbier  <barbier@debian.org>,  David  Prévot  <david@tilapin.org>   et   Grégoire   Scano
       <gregoire.scano@malloc.fr>

       Cette  traduction  est  une  documentation libre ; veuillez vous reporter à la GNU General
       Public  License  version 3  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩   concernant   les
       conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un
       message à ⟨debian-l10n-french@lists.debian.org⟩.