Pergunta

É possível chamar uma função extra quando o main () sair em c?

Obrigado!

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top