Condividi tramite


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

Vedi anche

abort