_set_abort_behavior
Spécifie l’action à entreprendre quand un programme s’arrête anormalement.
Remarque
N’utilisez pas la abort
fonction pour arrêter une application du Microsoft Store, sauf dans les scénarios de test ou de débogage. Les méthodes programmatiques ou d’interface utilisateur pour fermer une application Store ne sont pas autorisées en fonction des stratégies du Microsoft Store. Pour plus d’informations, consultez le cycle de vie des applications UWP.
Syntaxe
unsigned int _set_abort_behavior(
unsigned int flags,
unsigned int mask
);
Paramètres
flags
Nouvelle valeur des indicateurs abort
.
mask
Masque pour les bits d’indicateurs abort
à définir.
Valeur retournée
Ancienne valeur des indicateurs.
Notes
Il existe deux indicateurs abort
: _WRITE_ABORT_MSG
et _CALL_REPORTFAULT
. _WRITE_ABORT_MSG
détermine si un message texte utile est imprimé quand un programme s’arrête anormalement. Le message indique que l’application a appelé la fonction abort
. Le comportement par défaut consiste à imprimer le message. _CALL_REPORTFAULT
, s’il est défini, appelle le mécanisme du service de rapports d’erreurs Windows (anciennement Dr Watson) pour signaler des échecs à Microsoft lorsqu’il abort
est appelé. Par défaut, le signalement de vidage sur incident est activé dans les builds non DEBUG. Si le gestionnaire de rapports d’erreurs Windows n’est pas appelé, abort
les appels _exit
pour arrêter le processus avec le code de sortie 3 et retourne le contrôle au processus parent ou au système d’exploitation. _exit
ne vide pas les mémoires tampons de flux ou ne traite atexit
/_onexit
pas.
Pour des raisons de compatibilité Windows, lorsque des abort
appels _exit
, il peut appeler l’API Windows ExitProcess
, ce qui permet à son tour aux routines d’arrêt DLL de s’exécuter. Les destructeurs ne sont pas exécutés dans l’exécutable, mais la même chose peut ne pas être vraie des DLL chargées dans l’espace de processus de l’exécutable. Ce comportement n’est pas strictement conforme à la norme C++. Pour terminer immédiatement un processus, y compris les DLL, utilisez l’API Windows TerminateProcess
. Vous pouvez également inscrire un gestionnaire de signal d’abandon qui appelle un TerminateProcess
comportement conforme aux normes. Le comportement conforme peut entraîner un certain coût dans la compatibilité de Windows.
Par défaut, l’état global de cette fonction est limité à l’application. Pour le modifier, consultez l’état global dans le CRT.
Spécifications
Routine | En-tête requis |
---|---|
_set_abort_behavior |
<stdlib.h> |
Pour plus d’informations sur la compatibilité, consultez Compatibility.
Exemple
// 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.