Spec-Zone.ru › C++

std::_Exit

Определено в заголовочном файле <cstdlib>
[[noreturn]] void _Exit( int exit_code ) noexcept;
(начиная с C++11)

Вызывает нормальное завершение программы без полной очистки ресурсов.

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

Если exit_code равно 0 или EXIT_SUCCESS, в среду выполнения возвращается зависящий от реализации статус, указывающий на успешное завершение. Если exit_code равно EXIT_FAILURE, возвращается зависящий от реализации статус, указывающий на неуспешное завершение. В остальных случаях возвращается зависящее от реализации значение статуса.

От автономной реализации требуется предоставлять std::_Exit.

(начиная с C++23)

Параметры

exit_code - код завершения программы

Примечания

Хотя с C++23 _Exit требуется в автономной реализации, в автономной реализации C он не обязан быть доступен.

Пример

#include <iostream>

class Static
{
public:
    ~Static() 
    {
        std::cout << "Static dtor\n";
    }
};

class Local
{
public:
    ~Local() 
    {
        std::cout << "Local dtor\n";
    }
};

Static static_variable; // dtor of this object will *not* be called

void atexit_handler()
{
    std::cout << "atexit handler\n";
}

int main()
{
    Local local_variable; // dtor of this object will *not* be called
    
    // handler will *not* be called
    const int result = std::atexit(atexit_handler);

    if (result != 0)
    {
        std::cerr << "atexit registration failed\n";
        return EXIT_FAILURE;
    }

    std::cout << "test" << std::endl; // flush from std::endl
        // needs to be here, otherwise nothing will be printed
    std::_Exit(EXIT_FAILURE);
}

Вывод:

test

См. также

abort
вызывает аварийное завершение программы (без очистки ресурсов)
(функция)
exit
вызывает нормальное завершение программы с очисткой ресурсов
(функция)
Документация по C для _Exit

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/utility/program/_Exit

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API