EXIT |
Quitter |
---|---|
Langage C | stdlib.h |
Syntaxe
void exit(int etat); |
Paramètres
Nom | Description |
---|---|
etat | Ce paramètre permet d'indiquer le code d'état de sortie |
Description
Cette fonction met fin à l'exécution d'un programme avec une valeur de retour. D'abord, toutes les fonctions enregistrées par la fonction atexit sont appelées, dans l'ordre inverse de leur enregistrement, sauf qu'une fonction est appelée après toute fonction précédemment enregistrée ayant déjà été appelée au moment de son enregistrement. Si, pendant l'appel à une telle fonction, un appel à la fonction longjmp est effectué pour mettre fin à l'appel à la fonction enregistrée, le comportement est indéfini. Ensuite, tous les flux ouverts avec des données tamponnées non écrites sont vidés, tous les flux ouverts sont fermés et tous les fichiers créés par la fonction tmpfile sont supprimés. Enfin, le contrôle est renvoyé à l'environnement hôte. Si la valeur d'état est zéro ou EXIT_SUCCESS, une forme définie par l'intégration de l'état de fin de résiliation est renvoyée. Si la valeur de l'état est EXIT_FAILURE, une forme définie par l'intégration de la résiliation d'état infructueuse est renvoyée. Sinon, l'état renvoyé est défini par l'intégration.
Algorithme
MODULE exit(etat) * Exécuter tous les destructeurs et les fonctions enregistrées avec atexit() POUR CHAQUE fonction dans atexit_list APPEL function() FIN POUR CHAQUE * Fermer tous les fichiers ouverts et libérer les ressources close_all_files() release_all_resources() * Envoyer le code de sortie au système d'exploitation RETOURNE etat au système d'exploitation * Terminer le processus terminate_process() |
Remarques
- Si plusieurs appels à la fonction exit sont exécutés par un programme, le comportement est indéfini.
- La fonction exit n'est pas retourner à l'appelant.
- Valeur de retour : Le paramètre etat passé à la fonction exit est souvent utilisé pour indiquer l'état du programme au moment de sa fin. Par convention, un code de sortie de 0 indique une exécution réussie, tandis que des valeurs non nulles signalent des erreurs. Ce code de retour est renvoyé au système d'exploitation ou à tout programme parent, comme un script d'interpréteur de commande.
- Nettoyage avant la sortie : Avant de quitter le programme, exit appelle les fonctions enregistrées via atexit. Cela permet d'exécuter un certain nombre de tâches de nettoyage, telles que la fermeture des fichiers ouverts ou la libération de la mémoire allouée dynamiquement, afin d'éviter les fuites de ressources.
- Comportement en cas d'erreur : Si un programme C rencontre une situation ne pouvant pas être récupérée, il peut utiliser exit pour quitter proprement. Par exemple, si une erreur grave se produit, comme l'impossibilité d'allouer de la mémoire ou de lire un fichier essentiel, exit(EXIT_FAILURE) peut être utilisé pour signaler l'échec au système ou à l'utilisateur.
- Code de sortie standard : Le langage C définit deux constantes dans <stdlib.h> pour les codes de sortie les plus courants :
- Impact sur les processus enfants : Lorsqu'un programme appelle exit, il termine le processus courant, et tous les processus enfants créés par ce dernier sont également terminés. Cela permet d'éviter que des processus zombies ne continuent d'exister après la fin du programme parent.
- Différence avec return dans main : Bien que la fonction return puisse être utilisée dans la fonction main pour spécifier le code de retour, exit peut être appelée de n'importe où dans le programme pour interrompre immédiatement l'exécution, y compris dans des fonctions autres que main. exit assure une terminaison plus contrôlée, tandis que return est plus localisé à la fonction qui l'appelle.
Constante | Description |
---|---|
EXIT_SUCCESS | (Valeur généralement définie à 0) pour un programme qui se termine normalement. |
EXIT_FAILURE | (Valeur généralement définie à 1) pour indiquer qu'une erreur s'est produite. |
Exemple
Voici quelques exemples typiques de l'utilisation de cette fonction :
Essayer maintenant !
on obtiendra le résultat suivant :
Parametres attendue !Voir également
Langage de programmation - C - Référence procédures et fonctions - abort
Langage de programmation - C++ - Référence procédures et fonctions - exit
Références
Langage C, Edition Micro-Application, Gehard Willms, 2001, ISBN: 2-7429-2008-0, page 731.
Borland C++ for Windows 4.0, Library Reference, Edition Borland, 1993, Part # BCP1240WW21772, page 90.