Compartir a través de


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

Consulte también

abort