_set_abort_behavior
Especifica la acción que se debe llevar a cabo cuando un programa finaliza de forma anormal.
Nota:
No use la función abort
para cerrar una aplicación de Microsoft Store, excepto en escenarios de prueba o depuración. Las formas de cerrar una aplicación de Store mediante programación o con la interfaz de usuario no están permitidas según las Directivas de Microsoft Store. Para obtener más información, consulte Ciclo de vida de la aplicación para UWP.
Sintaxis
unsigned int _set_abort_behavior(
unsigned int flags,
unsigned int mask
);
Parámetros
flags
Nuevo valor de las marcas abort
.
mask
Máscara para los bits de las marcas abort
que se deben establecer.
Valor devuelto
Valor anterior de las marcas.
Comentarios
Hay dos marcas abort
: _WRITE_ABORT_MSG
y _CALL_REPORTFAULT
. _WRITE_ABORT_MSG
determina si se imprime un mensaje de texto de ayuda cuando un programa finaliza de forma anormal. El mensaje indica que la aplicación ha llamado a la función abort
. El comportamiento predeterminado consiste en imprimir el mensaje. _CALL_REPORTFAULT
, si se establece, invoca el mecanismo de servicio de Informe de errores de Windows (anteriormente conocido como Dr. Watson) para notificar errores a Microsoft cuando se llama a abort
. De forma predeterminada, los informes de volcado de memoria están habilitados en las compilaciones que no son de DEBUG. Si no se invoca al controlador de informe de errores de Windows, abort
llama a _exit
para finalizar el proceso con el código de salida 3 y devuelve el control al proceso primario o al sistema operativo. _exit
no vacía los búferes de secuencias ni realiza el procesamiento de atexit
/_onexit
.
Por motivos de compatibilidad de Windows, cuando abort
llama a _exit
, puede invocar la API ExitProcess
de Windows, que a su vez permite ejecutar rutinas de finalización de DLL. Los destructores no se ejecutan en el archivo ejecutable, pero es posible que no pase lo mismo con los archivos DLL cargados en el espacio de proceso del ejecutable. Este comportamiento no se ajusta estrictamente al estándar de C++. Para finalizar inmediatamente un proceso, incluidos los archivos DLL, use la API TerminateProcess
de Windows. También puede registrar un controlador de señal de anulación que invoque TerminateProcess
para el comportamiento compatible con el estándar. El comportamiento compatible puede conllevar algún costo en la compatibilidad de Windows.
De manera predeterminada, el estado global de esta función está limitado a la aplicación. Para cambiarlo, consulte Estado global en CRT.
Requisitos
Routine | Encabezado necesario |
---|---|
_set_abort_behavior |
<stdlib.h> |
Para obtener más información sobre compatibilidad, consulte Compatibilidad.
Ejemplo
// 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.