salir(1) en C++

Jinku Hu 12 octubre 2023
  1. Utilice la función exit para finalizar el programa C++ con código de estado
  2. Utilice exit(1) para terminar el programa C++ con código de estado de falla
salir(1) en C++

Este artículo explicará cómo utilizar la función exit() en C++.

Utilice la función exit para finalizar el programa C++ con código de estado

El programa en ejecución generalmente se denomina proceso en un sistema operativo y tiene su bucle de vida, que se representa en diferentes estados. Existen programas de larga duración, como los servidores web, pero incluso aquellos deben terminarse en algunas circunstancias o mediante la entrega de la señal del usuario. La terminación del proceso se puede invocar con la función exit(), que es parte del estándar C e incluida en C++. Toma un argumento entero que especifica el estado de terminación del programa que se puede leer del proceso padre si se espera al hijo.

El valor convencional del código de estado de retorno exitoso es 0, y cualquier cosa que no sea cero se considera un código de error, que puede corresponder al escenario predefinido. Tenga en cuenta que hay dos expresiones macro llamadas EXIT_SUCCESS y EXIT_FAILURE para indicar los códigos de salida correspondientes pasados ​​a la llamada exit. Generalmente, el programa tiene múltiples flujos de archivos y archivos temporales abiertos, que se cierran o eliminan automáticamente cuando se invoca la exit.

#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);
}

Producción :

Executing the program...

Utilice exit(1) para terminar el programa C++ con código de estado de falla

La función exit con el valor de argumento de 1 se usa para denotar la terminación con falla. Algunas funciones que devuelven el valor de un código de estado de llamada exitoso podrían combinarse con la declaración condicional que verifica el valor devuelto y sale del programa si se produjo el error. Tenga en cuenta que exit(1) es lo mismo que llamar a 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);
}

Producción :

Executing the program...

Otra característica útil de la función exit() es ejecutar funciones especialmente registradas antes de que el programa finalice finalmente. Estas funciones pueden definirse como funciones regulares, y para ser invocadas tras la terminación, deben registrarse con la función atexit. atexit es parte de la biblioteca estándar y toma un puntero de función como único argumento. Observe que se pueden registrar múltiples funciones usando las múltiples llamadas atexit, y cada una de ellas se invoca en orden inverso una vez que se ejecuta la exit.

#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);
}

Producción :

Executing the program...
at_exit_func2 called
at_exit_func called
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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