Chame outra função quando Main () sair
Pergunta
É possível chamar uma função extra quando o main () sair em c?
Obrigado!
Solução
Você pode registrar funções para executar depois main
saídas usando a atexit
função.
Msdn tem Um bom exemplo sucinto de como isso é feito. Basicamente, as funções registradas com atexit
são executados na ordem inversa de quando foram registrados.
Outras dicas
Tente o atexit()
função:
void myfunc() {
/* Called when the program ends */
}
int main( int arc, char *argv[] ) {
atexit( myfunc );
...
return 0;
}
Ótima pergunta e respostas. Apenas uma nota lateral. O abuso de um recurso semelhante nas bibliotecas Delphi levou a aplicativos que são irritantemente lentos no fechamento.
Enquanto atexit()
é o padrão para registrar uma função a ser executada no término do processo, o GCC fornece um destruidor atributo da função* Isso faz com que uma função seja chamada automaticamente quando main()
concluiu ou exit()
tem sido chamado.
void __attribute__ ((destructor)) my_fini(void);
* GCC específico