Поделиться через


_set_abort_behavior

Указывает действие, выполняемое при аварийном завершении программы.

Примечание.

Не используйте функцию abort для завершения работы приложения Microsoft Store, за исключением сценариев тестирования или отладки. Программные или пользовательские способы закрытия приложения Магазина запрещены в соответствии с политиками Microsoft Store. Дополнительные сведения см. в разделе жизненного цикла приложений UWP.

Синтаксис

unsigned int _set_abort_behavior(
   unsigned int flags,
   unsigned int mask
);

Параметры

flags
Новое значение флагов abort.

mask
Маска для битов флагов abort, которую требуется задать.

Возвращаемое значение

Старое значение флагов.

Замечания

Существует два флага abort: _WRITE_ABORT_MSG и _CALL_REPORTFAULT. _WRITE_ABORT_MSG определяет, будет ли выводиться полезное текстовое сообщение при аварийном завершении программы. Сообщение указывает на то, что приложение вызвало функцию abort. По умолчанию сообщение выводится. _CALL_REPORTFAULT, если задано, вызывает механизм службы отчеты об ошибках Windows (ранее известный как доктор Уотсон), чтобы сообщить о сбоях корпорации Майкрософт при abort вызове. По умолчанию функция создания отчетов о аварийных дампах включена в неотладочных сборках. Если обработчик отчетов об ошибках Windows не вызывается, abort вызовы _exit для завершения процесса с кодом выхода 3 и возвращают управление родительскому процессу или операционной системе. _exit не очищает буферы потоков или не выполняет atexit/_onexit обработку.

По соображениям abort совместимости Windows при вызовах _exitон может вызвать API Windows ExitProcess , который, в свою очередь, позволяет выполнять подпрограммы завершения БИБЛИОТЕК DLL. Деструкторы не выполняются в исполняемом файле, но то же самое может быть не верно для библиотек DLL, загруженных в пространство процесса исполняемого файла. Это поведение не соответствует стандарту C++ . Чтобы немедленно завершить процесс, включая библиотеки DLL, используйте API Windows TerminateProcess . Вы также можете зарегистрировать обработчик сигнала прерывания, вызывающий TerminateProcess для стандартного поведения. Поведение, соответствующее требованиям, может оказаться в некоторых затратах на совместимость Windows.

По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить его, ознакомьтесь с глобальным состоянием в CRT.

Требования

Маршрут Обязательный заголовок
_set_abort_behavior <stdlib.h>

Дополнительные сведения о совместимости см. в разделе Совместимость.

Пример

// crt_set_abort_behavior.c
// compile with: /TC
#include <stdlib.h>

int main()
{
   printf("Suppressing the abort message. If successful, this message"
          " will be the only output.\n");
   // Suppress the abort message
   _set_abort_behavior( 0, _WRITE_ABORT_MSG);
   abort();
}
Suppressing the abort message. If successful, this message will be the only output.

См. также

abort