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.