_set_abort_behavior
Specifica l'azione da eseguire quando un programma viene terminato in modo anomalo.
Nota
Non usare la abort
funzione per arrestare un'app di Microsoft Store, ad eccezione di scenari di test o debug. I modi programmatici o dell'interfaccia utente per chiudere un'app dello Store non sono consentiti in base ai criteri di Microsoft Store. Per altre informazioni, vedi Ciclo di vita delle app UWP.
Sintassi
unsigned int _set_abort_behavior(
unsigned int flags,
unsigned int mask
);
Parametri
flags
Nuovo valore dei flag abort
.
mask
Maschera per i bit dei flag abort
da impostare.
Valore restituito
Valore precedente dei flag.
Osservazioni:
Esistono due flag abort
: _WRITE_ABORT_MSG
e _CALL_REPORTFAULT
. _WRITE_ABORT_MSG
determina se viene stampato un messaggio di testo utile quando un programma viene terminato in modo anomalo. Il messaggio indica che l'applicazione ha chiamato la funzione abort
. Il comportamento predefinito prevede la stampa del messaggio. _CALL_REPORTFAULT
, se impostato, richiama il meccanismo del servizio Segnalazione errori Windows (noto in precedenza come Dr. Watson) per segnalare gli errori a Microsoft quando abort
viene chiamato. Per impostazione predefinita, la segnalazione di dump di arresto anomalo del sistema è abilitata per le compilazioni non di debug. Se il gestore segnalazione errori Windows non viene richiamato, abort
chiama _exit
per terminare il processo con codice di uscita 3 e restituisce il controllo al processo padre o al sistema operativo. _exit
non scarica i buffer di flusso o esegue atexit
/_onexit
l'elaborazione.
Per motivi di compatibilità di Windows, quando abort
chiama _exit
, può richiamare l'API Windows ExitProcess
, che a sua volta consente l'esecuzione di routine di terminazione DLL. I distruttori non vengono eseguiti nel file eseguibile, ma lo stesso potrebbe non essere vero delle DLL caricate nello spazio di elaborazione dell'eseguibile. Questo comportamento non è strettamente conforme allo standard C++. Per terminare immediatamente un processo che include tutte le DLL, usare l'API di Windows TerminateProcess
. È anche possibile registrare un gestore del segnale di interruzione che richiama per il TerminateProcess
comportamento conforme allo standard. Il comportamento conforme può comportare un certo costo per la compatibilità di Windows.
Per impostazione predefinita, lo stato globale di questa funzione è limitato all'applicazione. Per modificarlo, vedere Stato globale in CRT.
Requisiti
Ciclo | Intestazione obbligatoria |
---|---|
_set_abort_behavior |
<stdlib.h> |
Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).
Esempio
// 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.