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