std::abort
De cppreference.com
<tbody>
</tbody>
<tbody class="t-dcl-rev ">
</tbody><tbody>
</tbody>
| Definido en el archivo de encabezado <cstdlib>
|
||
void abort(); |
(hasta C++11) | |
[[noreturn]] void abort() noexcept; |
(desde C++11) | |
Genera una finalización del programa a menos que SIGABRT esté siendo atrapada por un controlador de señales y el controlador no regrese.
No se llama a los destructores de las variables con duración de almacenamiento automática, local al hilo y estática. Tampoco se llama a las funciones pasadas a atexit(). Si se cierran o no recursos abiertos, tales como archivos, está definido por la implementación. Se devuelve un estado definido por la implementación al entorno anfitrión, que indica una ejecución sin éxito.
Parámetros
(Ninguno)
Valor de retorno
(Ninguno)
Excepciones
No lanza nada.
Notas
POSIX especifica que la función abort() redefine bloquear o ignorar la señal SIGABRT.
Ejemplo
Ejecuta este código
#include <csignal>
#include <iostream>
#include <cstdlib>
class Probador {
public:
Probador() { std::cout << "Probador ctor\n"; }
~Probador() { std::cout << "Probador dtor\n"; }
};
Probador probador_estatico; // no se ha llamado al destructor
// controlador de señales
void signal_handler(int signal)
{
if (signal == SIGABRT) {
std::cerr << "SIGABRT recibida\n";
} else {
std::cerr << "Señal no esperada " << signal << " recibida\n";
}
std::_Exit(EXIT_FAILURE);
}
int main()
{
Probador probador_automatico; // no se ha llamado al destructor
// Preparar el controlador
auto controlador_anterior = std::signal(SIGABRT, signal_handler);
if (controlador_anterior == SIG_ERR) {
std::cerr << "Preparación ha fracasado\n";
return EXIT_FAILURE;
}
std::abort(); // Generar SIGABRT
std::cout << "Este código es inalcanzable\n";
}
Salida:
Probador ctor
Probador ctor
SIGABRT recibida
Véase también
| Produce la terminación normal del programa con limpieza. (función) | |
| Registra una función a ser llamada cuando se invoque a exit(). (función) | |
(C++11) |
Produce la terminación normal del programa sin limpiar completamente. (función) |
(C++11) |
Registra una función a ser llamada cuando se invoque a quick_exit. (función) |
| Establece un controlador de señales para una señal en particular. (función) | |
Documentación de C para abort
| |