Est-il possible d'appeler une fonction supplémentaire lorsque main() quitte en C?Appel d'une autre fonction lorsque main() quitte
Merci!
Est-il possible d'appeler une fonction supplémentaire lorsque main() quitte en C?Appel d'une autre fonction lorsque main() quitte
Merci!
Vous pouvez enregistrer des fonctions à exécuter après les sorties main
à l'aide de the atexit
function. MSDN a a nice succinct example de la façon dont cela est fait. Fondamentalement, les fonctions enregistrées avec atexit
sont exécutées dans l'ordre inverse du moment où elles ont été enregistrées.
Essayez la fonction atexit()
:
void myfunc() {
/* Called when the program ends */
}
int main(int arc, char *argv[]) {
atexit(myfunc);
...
return 0;
}
Grande question et les réponses. Juste une note de côté. L'abus d'une fonctionnalité similaire dans les bibliothèques Delphi a conduit à des applications qui sont ennuyeuses à la fermeture.
Alors que atexit()
est la norme pour l'enregistrement d'une fonction à exécuter à la fin du processus, GCC fournit un destructorfunction attribute* qui provoque une fonction à appeler automatiquement lorsque main()
a terminé ou exit()
a été appelé.
void __attribute__ ((destructor)) my_fini(void);
* GCC spécifique
fait belle réponse :) – SjB
De temps en temps un écureuil aveugle trouve un écrou ... –
juste ce que je avais besoin, je vous remercie! – edarroyo