Diferencia entre std::quick_exit y std::abort

 

std::salida_rápida()

Hace que ocurra la finalización normal del programa sin limpiar completamente los recursos. Sintaxis:

 void quick_exit(int exit_code) no except; 

En caso de ejecución de subprocesos, los códigos se vuelven complejos y conocer la ejecución de subprocesos es difícil. Mientras que uno de los subprocesos puede estar esperando que finalice un proceso, mientras que el otro subproceso está esperando el subproceso anterior. En tales casos, los programas reales suelen bloquearse y salir, lo que no es agradable. El administrador debe forzar el inicio del sistema o cerrar la interfaz de usuario, etc. para salir del bloqueo. Para este propósito se hizo std::quick_exit() . Termina el programa salvándonos de la parte difícil de salir de un punto muerto mientras ejecutamos un programa real. Limpia el IO pero no descarga los destructores estáticos. Otra función at_quick_exit() 

 int at_quick_exit( void (*func)(void) ); 

toma una función como parámetro que se ejecutará cuando se llame a la función quick_exit(). Las funciones registradas en este se llaman en el orden inverso de su ejecución.

#include <cstdlib>
void atEXIT()
{
  cout << "Quick exit function.";
}
int main ()
{
  at_quick_exit(atEXIT);
  cout << "Main Function";
  quick_exit(0);
  cout << "End of Main"; 
  return 0;
}
 Output:  Main Function
          Quick exit function.    

std::abortar()

Provoca la finalización anómala del programa, a menos que SIGABRT sea captado por un controlador de señal que se pasa a std::signal y el controlador no regresa. Sintaxis:

 void abort() no except; 

POSIX especifica que la función de cancelación anula el bloqueo o la ignorancia de la señal SIGABRT.

#include <cstdlib>

int main ()
{
  FILE * fp;
  fp= fopen("myfile.txt", "r");
  if (fp== NULL)
  {
    fputs("Error opening file \n", stderr);
    abort();
  }
  fclose(fp);
  return 0;
}
 Output:  The file named myfile.txt, if not found or fails opens due to any reason the error 
            message is printed and abort function terminates the program.

Similitudes: las funciones std::quick_exit() y std::abort() están definidas en el encabezado cstdlib. Ambas funciones no tienen parámetros ni excepciones. Ambos no tienen valor de retorno también. Se utilizan para la terminación del programa, pero siguen siendo diferentes entre sí. Diferencias: la razón para introducir la función quick_exit() fue finalizar el programa en ejecución mientras se borraba el IO y todavía se obtenía una parte del programa, es decir, las funciones registradas en at_quick_exit() para ejecutarse mientras que la función std::abort() termina el programa sin ejecutar además parte del programa y sin borrar el IO.

Veamos las diferencias en forma tabular -:

  std::salida_rápida std::abortar
1. Se define en el archivo de encabezado <cstdlib> Se define en el archivo de encabezado <cstdlib>
2.

Su sintaxis es -:

salida_rápida( int código_salida )

Su sintaxis es -:

abortar();

3. Solo toma un parámetro No toma ningún parámetro.
4. Su valor de retorno es nulo. Su valor de retorno es nulo.

Publicación traducida automáticamente

Artículo escrito por AkshatBhardwaj y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *