ATEXIT |
A la sortie |
---|---|
Langage C | stdlib.h |
Syntaxe
int atexit(void (*ptrfonction)(void)); |
Paramètres
Nom | Description |
---|---|
ptrfonction | Ce paramètre permet d'indiquer une fonction à traiter avant de terminer le processus |
Retour
Valeur | Description |
---|---|
0 | Cette valeur permet d'indiquer que la fonction a correctement été enregistré. |
différent de 0 | Ces valeurs permettent d'indiquer qu'une erreur s'est produite et que la fonction n'a pas été enregistré. |
Description
Cette fonction permet d'indiquer une fonction devant être appelée à la fin d'un programme avant de se terminer.
Algorithme
* Entrée : Une fonction callback sans paramètres et sans valeur de retour * Sortie : Code de succès ou d'erreur MODULE ATEXIT(callback) SI la liste des fonctions de rappel est pleine ALORS Retourner une erreur (indiquant que la fonction n'a pas pu être enregistrée) FIN SI Ajouter callback à la liste des fonctions de rappel à exécuter lors de la terminaison RETOURNE 0 |
Remarques
- Si plus d'un appel à cette fonction a été spécifié par le programme, lors de la de terminaison de celui-ci, il les exécutera tous dans l'ordre inverse qu'ils ont été spécifié comme une pile (du dernier vers le premier).
- ATTENTION ! Si vous appelez cette fonction après l'appel de sortie, vous risquez d'avoir un comportement différent d'un compilateur de C à l'autre ou de sa bibliothèque.
- Si une erreur se produit à l'intérieur d'une fonction enregistré, si aucun gestionnaire d'exception n'est fournit, il effectuera la terminaison du C par défaut.
- Le nombre maximum de fonction pouvant être enregistré dépendant de quel façon à été écrite, mais ils ont tous une capacité supérieur à 32 appels de fonctions si elle respect la norme C99.
Exemple
Voici quelques exemples typiques de l'utilisation de cette fonction :
Essayer maintenant !
- #include <stdio.h>
- #include <stdlib.h>
-
- void exitA(void) {
- printf("Sortie A\n");
- }
-
- void exitB(void) {
- printf("Sortie B\n");
- }
-
- void exitC(void) {
- printf("Sortie C\n");
- }
-
- int main ()
- {
- atexit(exitA);
- atexit(exitB);
- atexit(exitC);
- printf("Début du programme\n");
- printf("Corps du programme...\n");
- exit(0);
- printf("Fin du programme jamais executé\n");
- return 0;
- }
on obtiendra le résultat suivant :
Début du programmeCorps du programme...
Sortie C
Sortie B
Sortie A
Voir également
Langage de programmation - C++ - Référence de procédures et fonctions - atexit
Références
Langage C, Edition Micro-Application, Gehard Willms, 2001, ISBN: 2-7429-2008-0, page 730.
Borland C++ for Windows 4.0, Library Reference, Edition Borland, 1993, Part # BCP1240WW21772, page 33.
Dernière mise à jour : Mardi, le 28 juillet 2015