Espacios de nombres
Variantes

std::abort

De cppreference.com
 
 
Biblioteca de servicios
 
 
<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

#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) [editar]
Registra una función a ser llamada cuando se invoque a exit().
(función) [editar]
Produce la terminación normal del programa sin limpiar completamente.
(función) [editar]
Registra una función a ser llamada cuando se invoque a quick_exit.
(función) [editar]
Establece un controlador de señales para una señal en particular.
(función) [editar]