Namespaces
Variants

std:: abort

From cppreference.net
Utilities library
Défini dans l'en-tête <cstdlib>
void abort ( ) ;
(jusqu'à C++11)
[ [ noreturn ] ] void abort ( ) noexcept ;
(depuis C++11)

Provoque la terminaison anormale du programme sauf si SIGABRT est intercepté par un gestionnaire de signal passé à std::signal et que le gestionnaire ne retourne pas.

Les destructeurs des variables ayant une durée de stockage automatique , locale au thread (depuis C++11) et statique storage durations ne sont pas appelés. Les fonctions enregistrées avec std::atexit() et std::at_quick_exit (depuis C++11) ne sont pas non plus appelées. La fermeture des ressources ouvertes telles que les fichiers est définie par l'implémentation. Un statut défini par l'implémentation est retourné à l'environnement hôte indiquant une exécution non réussie.

Table des matières

Paramètres

(aucun)

Valeur de retour

Aucun car il ne retourne pas.

Exceptions

Ne lance rien.

Notes

POSIX spécifie que la fonction abort() contourne le blocage ou l'ignorage du signal SIGABRT .

Certaines intrinsèques de compilateur, par exemple __builtin_trap (gcc, clang, et icc) ou __fastfail / __debugbreak (msvc), peuvent être utilisées pour terminer le programme aussi rapidement que possible.

Exemple

#include <csignal>
#include <cstdlib>
#include <iostream>
class Tester
{
public:
    Tester()  { std::cout << "Tester ctor\n"; }
    ~Tester() { std::cout << "Tester dtor\n"; }
};
Tester static_tester; // Destructor not called
void signal_handler(int signal) 
{
    if (signal == SIGABRT)
        std::cerr << "SIGABRT received\n";
    else
        std::cerr << "Unexpected signal " << signal << " received\n";
    std::_Exit(EXIT_FAILURE);
}
int main()
{
    Tester automatic_tester; // Destructor not called
    // Setup handler
    auto previous_handler = std::signal(SIGABRT, signal_handler);
    if (previous_handler == SIG_ERR)
    {
        std::cerr << "Setup failed\n";
        return EXIT_FAILURE;
    }
    std::abort(); // Raise SIGABRT
    std::cout << "This code is unreachable\n";
}

Sortie :

Tester ctor
Tester ctor
SIGABRT received

Voir aussi

provoque la fin normale du programme avec nettoyage
(fonction)
enregistre une fonction à appeler lors de l'invocation de std::exit()
(fonction)
(C++11)
provoque la fin rapide du programme sans nettoyage complet
(fonction)
enregistre une fonction à appeler lors de l'invocation de std::quick_exit
(fonction)
définit un gestionnaire de signal pour un signal particulier
(fonction)
fonction appelée lorsque la gestion des exceptions échoue
(fonction)