2009-11-21 3 views

Répondre

23

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.

+0

fait belle réponse :) – SjB

+3

De temps en temps un écureuil aveugle trouve un écrou ... –

+0

juste ce que je avais besoin, je vous remercie! – edarroyo

9

Essayez la fonction atexit():

void myfunc() { 
    /* Called when the program ends */ 
} 

int main(int arc, char *argv[]) { 
    atexit(myfunc); 
    ... 
    return 0; 
} 
2

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.

1

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

Questions connexes