Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Função exit
  2. Função abort
  3. Função assert
  4. Função atexit

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...
  1. 05/09/2025 - revisão 1 - Ajustes: pontuais, Ex. 2, target link 'exit' e sintaxes
  2. 05/05/2025 - versão inicial