2009-11-21 8 views

risposta

23

È possibile registrare le funzioni da eseguire dopo le uscite main utilizzando the atexit function.

MSDN ha a nice succinct example di come è stato fatto. Fondamentalmente, le funzioni registrate con atexit vengono eseguite in ordine inverso rispetto a quando sono state registrate.

+0

davvero bello risposta :) – SjB

+3

Di tanto in tanto uno scoiattolo cieco trova una noce ... –

+0

proprio quello che mi serviva, grazie! – edarroyo

9

Prova la funzione atexit():

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

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

Grande domande e risposte. Solo una nota a margine. L'abuso di una funzionalità simile nelle librerie di Delphi ha portato ad applicazioni che sono fastidiosamente lente alla chiusura.

1

Mentre atexit() è lo standard per la registrazione di una funzione di funzionare a terminazione processo, GCC fornisce un distruttore function attribute* che provoca una funzione da chiamare automaticamente quando main() ha completato o exit() è stato chiamato.

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

* GCC specifico

Problemi correlati