Exécuter une fonction avant la fin du programme

Problème

Lorsque votre programme prend fin, vous voudriez qu’une fonction soit exécutée.

Solution

Utilisez la fonction atexit() pour indiquer la fonction à utiliser lorsque votre programme prend fin (à la fin de la fonction main() ou à l’exécution d’exit()).

Dans certains cas, vous préférerez la nouvelles fonction de la norme C11 at_quick_exit() lors d’un appel à quick_exit() pour mettre fin au programme de façon accélérée.

Discussion

Un programme prend fin normalement en fin d’exécution de main() ou lors d’un appel à exit(). Il existe au moins deux autres façons pour un programme de s’arrêter. Citons le cas du traitement d’un signal (voyez le chapitre "Signaux" à ce sujet) dont le résultat serait la fin du programme. La fonction _exit() permet aussi une sortie rapide du programme. Si votre compilateur respecte la norme C11, quick_exit() est une troisième façon de sortir rapidement du programme : cette fonction appelle directement _exit().

La différence entre ces diverses fonctions se situe dans la possibilité ou non de lancer des fonctions programmées pour la fin du programme.

La fonction atexit() permet d’enregistrer des fonctions à exécuter lors de l’appel à exit() (ou en fin d’exécution de main()). Voici un exemple :


void ...
Pour consulter la suite, découvrez le livre suivant :
couv_EI3CACT.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Compiler une section de code en fonction d'une condition
Suivant
Introduction