Compartilhar via


_set_abort_behavior

Especifica a ação a ser tomada quando um programa é terminado de maneira anormal.

Observação

Não use a função abort para encerrar um aplicativo da Microsoft Store, exceto em cenários de teste ou depuração. As formas programáticas ou de interface do usuário para fechar um aplicativo da Store não são permitidas de acordo com as políticas da Microsoft Store. Para obter mais informações, confira o Ciclo de vida do aplicativo UWP.

Sintaxe

unsigned int _set_abort_behavior(
   unsigned int flags,
   unsigned int mask
);

Parâmetros

flags
Novo valor dos sinalizadores abort.

mask
Máscara para os bits dos sinalizadores abort a definir.

Valor retornado

O valor antigo dos sinalizadores.

Comentários

Há dois sinalizadores abort: _WRITE_ABORT_MSG e _CALL_REPORTFAULT. _WRITE_ABORT_MSG determina se uma mensagem de texto útil é impressa quando um programa é encerrado de maneira anormal. A mensagem informa que o aplicativo tiver chamou a função abort. O comportamento padrão é imprimir a mensagem. _CALL_REPORTFAULT, se definido, invoca o mecanismo Serviço de Relatório de Erros do Windows (anteriormente conhecido como Dr. Watson) para relatar falhas à Microsoft quando abort é chamado. Por padrão, o relatório do despejo de memória está habilitado em builds que não são do tipo DEBUG. Se o manipulador de relatório de erros do Windows não for invocado, abort chamará _exit para terminar o processo com o código de saída 3 e retornará o controle ao processo pai ou ao sistema operacional. _exit não libera os buffers de fluxo nem executa o processamento de atexit/_onexit.

Por motivos de compatibilidade com o Windows, quando abort chamar _exit, ele poderá invocar a API do Windows ExitProcess, que, por sua vez, permitirá que as rotinas de término de DLL sejam executadas. Os destruidores não são executados no executável, mas o mesmo pode não ser verdadeiro para as DLLs carregadas no espaço de processo do executável. Esse comportamento não está estritamente em conformidade com o padrão C++. Para terminar imediatamente um processo, incluindo todas as DLLs, use a API do Windows TerminateProcess. Você também pode registrar um manipulador de sinal de anulação que invoca TerminateProcess para um comportamento em conformidade padrão. O comportamento em conformidade pode ter algum custo na compatibilidade com o Windows.

Por padrão, o estado global dessa função tem como escopo o aplicativo. Para alterar isso, confira Estado global no CRT.

Requisitos

Rotina Cabeçalho necessário
_set_abort_behavior <stdlib.h>

Para obter informações sobre compatibilidade, consulte Compatibilidade.

Exemplo

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

Confira também

abort