Пространства имён
Варианты
Действия

std::abort

Материал из cppreference.com
< cpp‎ | utility‎ | program
 
 
 
Коммунальные услуги Программа поддержки
Программа прекращения
Оригинал:
Program termination
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
abort
exit
quick_exit(C++11)
_Exit(C++11)
Взаимодействие с окружающей средой
Оригинал:
Communicating with the environment
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Сигналы
Оригинал:
Signals
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Сигнал типа
Оригинал:
Signal types
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
SIGABRT
SIGFPE
SIGILL
SIGINT
SIGSEGV
SIGTERM
Нелокальные переходы
Оригинал:
Non-local jumps
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
setjmp
longjmp
Типы
Оригинал:
Types
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
jmp_buf
 
Определено в заголовочном файле <cstdlib>
[[noreturn]] void abort();
(начиная с C++11)
             void abort();
(до C++11)

Приводит к нештатному завершению программы, если не был перехвачен сигнал SIGABRT с помощью обработчика сигналов.

Деструкторы для переменных с автоматическим, потоковым (thread_local) и статическим длительностью хранилища не вызываются. Также не вызывается функция, переданная в std::atexit() Тем не менее закрытие открытых ресурсов, таких как файлов, зависит от реализации. Зависимый от реализации код, соответствующий неудачному выполнению программы, возвращается в среду её выполнения.

Содержание

[править] Параметры

(Нет)

[править] Возвращаемое значение

(Нет)

[править] Исключения

спецификация noexcept:  
noexcept
  

[править] Пример

#include <csignal>
#include <iostream>
#include <cstdlib>
 
class Tester {
public:
    Tester()  { std::cout << "Вызов конструктора\n"; }
    ~Tester() { std::cout << "Вызов деструктора\n"; }
};
 
Tester static_tester; // Деструктор не будет вызван
 
void signal_handler(int signal) 
{
    if (signal == SIGABRT) {
        std::cerr << "SIGABRT принят\n";
    } else {
        std::cerr << "Неожиданный сигнал принят: " << signal << "\n";
    }
    std::_Exit(EXIT_FAILURE);
}
 
int main()
{
    Tester automatic_tester; // Деструктор не будет вызван
 
    // Установка обработчика сигналов
    auto previous_handler = std::signal(SIGABRT, signal_handler);
    if (previous_handler == SIG_ERR) {
        std::cerr << "Установка сигнала неудачна\n";
        return EXIT_FAILURE;
    }
 
    std::abort();  //Аварийный выход из программы
    std::cout << "Этот код не достижим\n";
}

Вывод:

Вызов конструктора
Вызов конструктора
SIGABRT принят

[править] См. также

вызывает нормальное завершение программы с уборку
Оригинал:
causes normal program termination with cleaning up
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(функция) [править]
регистрирует функцию, которая вызывается при вызове exit()
Оригинал:
registers a function to be called on exit() invocation
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(функция) [править]
вызывает нормальное завершение программы без полной очистки
Оригинал:
causes normal program termination without completely cleaning up
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(функция) [править]
C documentation for abort