saída(1) em C++
-
Use a função
exit
para encerrar o programa C++ com código de status -
Use
exit(1)
para encerrar o programa C++ com código de status de falha
Este artigo explicará como usar a função exit()
em C++.
Use a função exit
para encerrar o programa C++ com código de status
O programa em execução é geralmente chamado de processo em um sistema operacional e tem seu bucle de vida, que é representado como diferentes estados. Existem programas de longa duração, como servidores da web, mas mesmo aqueles precisam ser encerrados em algumas circunstâncias ou entregando o sinal do usuário. A terminação do processo pode ser chamada com a função exit()
, que faz parte do padrão C e está incluída no C++. Leva um argumento inteiro que especifica o status de término do programa que pode ser lido do processo pai se o filho for aguardado.
O valor convencional do código de status de retorno bem-sucedido é 0
e qualquer coisa diferente de zero é considerada um código de erro, que pode corresponder ao cenário predefinido. Observe que há duas expressões macro chamadas EXIT_SUCCESS
e EXIT_FAILURE
para denotar os códigos de saída correspondentes passados para a chamada exit
. Geralmente, o programa tem vários fluxos de arquivos e arquivos temporários abertos, que são fechados ou removidos automaticamente quando a exit
é chamada.
#include <unistd.h>
#include <iostream>
using std::cout;
using std::endl;
int main() {
printf("Executing the program...\n");
sleep(3);
exit(0);
// exit(EXIT_SUCCESS);
}
Resultado:
Executing the program...
Use exit(1)
para encerrar o programa C++ com código de status de falha
A função exit
com o valor do argumento de 1
é usada para denotar o encerramento com falha. Algumas funções que retornam o valor de um código de status de chamada bem-sucedido podem ser combinadas com a instrução condicional que verifica o valor de retorno e sai do programa se o erro ocorreu. Observe que exit(1)
é o mesmo que chamar exit(EXIT_FAILURE)
.
#include <unistd.h>
#include <iostream>
using std::cout;
using std::endl;
int main() {
if (getchar() == EOF) {
perror("getline");
exit(EXIT_FAILURE);
}
cout << "Executing the program..." << endl;
sleep(3);
exit(1);
// exit(EXIT_SUCCESS);
}
Resultado:
Executing the program...
Outro recurso útil da função exit()
é executar funções especialmente registradas antes que o programa seja finalmente encerrado. Essas funções podem ser definidas como funções regulares e, para serem chamadas no encerramento, precisam ser registradas com a função atexit
. atexit
faz parte da biblioteca padrão e leva um ponteiro de função como o único argumento. Observe que várias funções podem ser registradas usando as várias chamadas atexit
, e cada uma delas é chamada em ordem reversa quando a exit
é executada.
#include <unistd.h>
#include <iostream>
using std::cout;
using std::endl;
static void at_exit_func() { cout << "at_exit_func called" << endl; }
static void at_exit_func2() { cout << "at_exit_func called" << endl; }
int main() {
if (atexit(at_exit_func) != 0) {
perror("atexit");
exit(EXIT_FAILURE);
}
if (atexit(at_exit_func2) != 0) {
perror("atexit");
exit(EXIT_FAILURE);
}
cout << "Executing the program..." << endl;
sleep(3);
exit(EXIT_SUCCESS);
}
Resultado:
Executing the program...
at_exit_func2 called
at_exit_func called
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook