Objetivos
        
    
    
    
    
        
            
                A função exit nos permite terminar nosso programa de forma imediata e 
                controlada retornando um valor positivo ou negativo indicando se o programa terminou 
                com sucesso ou falha.
            
            Sintaxe: include
            #include <stdlib.h>
            Sintaxe: 
            void exit(int status)
            Onde
            status: 0 ou EXIT_SUCCESS representa o status de OK ao encerrar um programa. Nenhum erro ocorreu.
1 ou EXIT_FAILURE representa o status de erro ao encerrar um programa. Ocorreu algum 
erro durante a execução.
            Exemplo 1
            
#include <stdio.h>
#include <stdlib.h> //exit EXIT_FAILURE
int main()
{
  int a = 0;
  if(a == 0)
    exit(EXIT_FAILURE);
    
  printf("%d",1/a);
}
            Saída
            - 
            
                A função exit pode ser utilizada em conjunto com a função atexit que será 
                vista mais adiante. 
            
         
     
    
    
        
            
                A função abort termina nosso programa de forma incondicional e imediata 
                usada quando ocorre um erro crítico sem possibilidade de continuação do programa.
            
            Sintaxe: include
            
#include <stdlib.h>
            Sintaxe: abort
            
void abort(void)
            Onde
            
-
            Exemplo 2
            
#include <stdlib.h>
#include <stdio.h>
#include <errno.h> //errno
int main()
{
  int a = 0;
  if(a == 0)
  {
    errno = 1; //Operation not permitted 
    perror("divisao por zero");
    abort();
  }
  else
  {
    printf("%d",1/a);
  }
}
            Saída
            divisao por zero: Operation not permitted
         
     
    
    
        
            
                A função assert é utilizada para checar condições e imprimir uma mensagem. 
                Caso a condição seja falsa(0), assert lança um erro, assertion failure, 
                e termina o programa imediatamente sem recuperação. 
            
            Sintaxe: include
            #include <assert.h>
            Sintaxe: assert
            void assert(int expression);
            Onde
            expression: expressão para validação
            Exemplo 3
            
#include <stdio.h>
#include <stdlib.h>
#include <assert.h> //assert()
int main()
{
  int a = 0;
  assert(a > 0);
  printf("%d",1/a);
}
            Saída
            main.out: main.c:8: main: Assertion `a > 0' failed.
            
                A assert não deve ser utilizada para validações de entrada de dados do usuário 
                como campo vazio ou valores inválidos, por exemplo. Esse tipo de validação deve ser 
                feita com if/else e retorno de valores ou mensagens.
            
         
     
    
    
        
            
                A função atexit é utilizada em conjunto com a função exit para invocar 
                uma função para realizar rotinas de encerramento em nossos programas para 
                liberação de arquivos aberto, memória alocada e ou outros recursos semelhantes.
            
            Sintaxe: include
            #include <stdlib.h>
            Sintaxe: atexit
            int atexit(void (*func)(void))
            Onde
            *func: ponteiro para função callback para ser invocada por atexit
            Retorno
            0 registro da função com sucesso
1 registro da função com falha
            Exemplo 4
            #include <stdio.h>
#include <stdlib.h>
void funcao()
{
    printf("atexit invocou funcao()\nDivisão por zero tratada.\nOutros tratamentos\nEncerrando...");
    //outras funções aqui
}
int main()
{
  int ret = atexit(funcao); //registro de callback
  if(ret == 1) //aborta se função não registrada
     abort();
     
  int a = 0;
  if( a == 0) //divisão por zero
  {
    exit(1); //invoca atexit
  }
  printf("%d",1/a);
  
  return 0;
}
            Saída
            atexit invocou funcao()
Divisão por zero tratada.
Outros tratamentos
Encerrando...
         
     
    
        Histórico de atualizações
        
     
    
        
            
                - 05/09/2025 - revisão 1 - Ajustes: pontuais, Ex. 2, target link 'exit' e sintaxes 
 
                - 05/05/2025 - versão inicial
 
            
         
     
    
            
            
                
                    
                    Os cursos oferecidos nesta página são cursos fornecidos por parceiros. Ao comprar um curso clicando
                em seu banner, você está ajudando a manter o projeto TutorialDev vivo. Os sites dos cursos parceiros utilizam cookies.