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

Siehe auch

abort