_set_abort_behavior
Gibt die Aktion an, die ausgeführt werden soll, wenn ein Programm nicht normal beendet wird.
Hinweis
Verwenden Sie die abort
Funktion nicht, um eine Microsoft Store-App herunterzufahren, außer bei Test- oder Debuggingszenarien. Programmgesteuerte oder UI-Methoden zum Schließen einer Store-App sind gemäß den Microsoft Store-Richtlinien nicht zulässig. Weitere Informationen finden Sie im Lebenszyklus der UWP-App.
Syntax
unsigned int _set_abort_behavior(
unsigned int flags,
unsigned int mask
);
Parameter
flags
Neuer Wert der abort
-Flags.
mask
Maske für die festzulegenden Bits der abort
-Flags.
Rückgabewert
Der alte Wert der Flags.
Hinweise
Es gibt zwei abort
-Flags: _WRITE_ABORT_MSG
und _CALL_REPORTFAULT
. _WRITE_ABORT_MSG
bestimmt, ob eine informative Textmeldung gedruckt werden soll, wenn ein Programm nicht normal beendet wird. Die Meldung sagt aus, dass die Anwendung die abort
-Funktion aufgerufen hat. Beim Standardverhalten wird die Meldung ausgeben. _CALL_REPORTFAULT
, wenn festgelegt, ruft den Windows-Fehlerberichterstattung Service-Mechanismus (früher als Dr. Watson bezeichnet) auf, um Fehler an Microsoft zu melden, wenn abort
der Aufruf erfolgt. Standardmäßig ist die Absturzabbildberichterstellung in den Nichtdebugversionen aktiviert. Wenn der Windows-Fehlerberichterstattungshandler nicht aufgerufen wird, rufen Sie _exit
aufabort
, um den Prozess mit Beendigungscode 3 zu beenden, und gibt die Steuerung an den übergeordneten Prozess oder das Betriebssystem zurück. _exit
löscht keine Datenstrompuffer oder verarbeitet atexit
/_onexit
.
Aus Gründen der Windows-Kompatibilität abort
kann beim Aufruf _exit
die Windows-API ExitProcess
aufgerufen werden, wodurch dll-Beendigungsroutinen wiederum ausgeführt werden können. Destruktoren werden nicht in der ausführbaren Datei ausgeführt, aber dasselbe gilt möglicherweise nicht für DLLs, die im Prozessbereich der ausführbaren Datei geladen wurden. Dieses Verhalten entspricht nicht streng dem C++-Standard. Verwenden Sie die Windows-API TerminateProcess
, um einen Prozess einschließlich aller DLLs sofort zu beenden. Sie können auch einen Abbruchsignalhandler registrieren, der für das standardkonforme Verhalten aufruft TerminateProcess
. Das konforme Verhalten kann bei der Windows-Kompatibilität zu bestimmten Kosten führen.
Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Informationen zum Ändern finden Sie im Global state in the CRT.
Anforderungen
Routine | Erforderlicher Header |
---|---|
_set_abort_behavior |
<stdlib.h> |
Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.
Beispiel
// 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.