2009-11-21 10 views

Antwort

23

Sie können Funktionen registrieren, die nach main Exits mit the atexit function ausgeführt werden sollen.

MSDN hat a nice succinct example davon, wie dies getan wird. Grundsätzlich werden die mit atexit registrierten Funktionen in umgekehrter Reihenfolge ihrer Registrierung ausgeführt.

+0

eigentlich nette Antwort :) – SjB

+3

Gelegentlich wird ein blindes Eichhörnchen findet eine Mutter ... –

+0

genau das, was ich brauchte, danke! – edarroyo

9

Versuchen Sie, die atexit() Funktion:

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

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

Große Frage und Antworten. Nur eine Randnotiz. Der Missbrauch eines ähnlichen Features in Delphi-Bibliotheken führte zu Anwendungen, die beim Schließen nervend langsam waren.

1

Während atexit() ist der Standard für eine Funktion bei der Registrierung Prozessbeendigung auszuführen, GCC stellt eine destructorfunction attribute*, die eine Funktion bewirkt automatisch aufgerufen wird, wenn main() abgeschlossen ist oder exit() aufgerufen wurde.

void __attribute__ ((destructor)) my_fini(void); 

* GCC spezifische