Ferramentas do usuário

Ferramentas do site


atexit

Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.


atexit [2023/09/12 16:14] (atual) – criada - edição externa 127.0.0.1
Linha 1: Linha 1:
 +====== Função atexit ======
  
 +Sintaxe:
 +
 +''[[tipos_dados|int]] atexit([[tipos_dados|void]] (*func)([[tipos_dados|void]]))''
 +
 +
 +Arquivo Header: ''stdlib.h''
 +
 +----
 +
 +Conforme definido no ANSI C, pode-se registrar até 32 [[definicao_funcao|funções]] que serão automaticamente executadas quando um processo termina. Estas funções são chamadas de //exit handlers// e são registradas através da chamada à função **''atexit''**.
 +
 +As funções serão chamadas na ordem inversa ao seu registro. Pode-se registrar a mesma [[definicao_funcao|função]] mais de uma vez que a mesma será chamada tantas vezes quantas registradas.
 +
 +A [[definicao_funcao|função]] a ser registrada não deve esperar nenhum parâmetro bem como não é esperado que a função retorne nenhum valor devendo ser definida como:
 +
 +''[[tipos_dados|void]] funcao([[tipos_dados|void]]);''
 +
 +Veja o exemplo:
 +
 +<code c>
 +/* programa atexit.c */
 +
 +#include <stdio.h>
 +#include <stdlib.h>
 +
 +void saindo1(void)
 +{
 +   printf("\nFinalizando 1.");
 +   return;
 +}
 +
 +void saindo2(void)
 +{
 +   printf("\nFinalizando 2.");
 +   return;
 +}
 +
 +int main(void)
 +{
 +   printf("\nRegistrando funções..");
 +   atexit(saindo1);
 +   atexit(saindo2);
 +   printf("\nNo meio do programa...");
 +   exit(0);
 +}
 +</code>