_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.