Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
As combinações de teclas CTRL+C e CTRL+BREAK recebem manipulação especial por processos de console. Por padrão, quando uma janela do console tem o foco do teclado, CTRL+C ou CTRL+BREAK é tratado como um sinal (SIGINT ou SIGBREAK) e não como entrada do teclado. Por padrão, esses sinais são passados para todos os processos do console que estão conectados ao console. (Os processos destacados não são afetados. Consulte Criação de um console.) O sistema cria um novo thread em cada processo do cliente para manipular o evento. O thread gera uma exceção se o processo estiver sendo depurado. O depurador pode manipular a exceção ou continuar com a exceção sem tratamento.
CTRL+BREAK é sempre tratado como um sinal, mas um aplicativo pode alterar o comportamento padrão da CTRL+C de duas maneiras que impedem que as funções do manipulador sejam chamadas:
- A função SetConsoleMode pode desativar o modo de entrada ENABLE_PROCESSED_INPUT para o buffer de entrada de um console, para que CTRL+C seja relatado como entrada de teclado em vez de como um sinal.
- Quando SetConsoleCtrlHandler é chamado com valores NULL e TRUE para seus parâmetros, o processo de chamada ignora os sinais CTRL+C. O processamento CTRL+C normal é restaurado chamando SetConsoleCtrlHandler com valores NULL e FALSE . Esse atributo de ignorar ou não ignorar sinais CTRL+C é herdado por processos filho, mas pode ser habilitado ou desabilitado por qualquer processo sem afetar os processos existentes.
Para obter mais informações sobre como esses sinais são processados, incluindo tempos limites, consulte a documentação de retorno de chamada de rotina do manipulador .