Não estou familiarizado com como os processos são eliminados no Windows. No Linux, um kill "quente" envia um sinal (15) que o processo pode manipular instanciando um manipulador de sinal. Um cold kill é o sinal (9) que o sistema operacional manipula, matando o processo com força.
Como posso "matar" um processo no Windows? Como é tratado pelo sistema operacional e pelo processo? Quais ações o SO executa? Existe uma maneira de plataforma cruzada de responder a uma solicitação de interrupção / fechamento?
SIGTERM
, 9 éSIGKILL
.Respostas:
"Finalizar tarefa" (e
taskkill
) parece postar umaWM_CLOSE
mensagem nas janelas do programa. (O mesmo é feito quando você clica no botão ×"Fechar".) Se o programa não sair em algum tempo, o usuário será solicitado a encerrar o programa com força."Kill Process" e
taskkill /f
useTerminateProcess()
.fonte
ntsd -p <pid> -c q
, que usa ontsd
depurador; Não tenho certeza do que acontece quando um programa é morto dessa maneira. ( pokes @Chris )taskkill
e ele responde com: "Esse processo só pode ser encerrado com força (com a opção / F)". Então sim, a única opção que resta éTerminateProcess()
.O Sysinternals (agora parte da Microsoft) oferece um utilitário chamado pskill, que pode ser usado na linha de comando para eliminar processos no sistema local ou em sistemas remotos.
A maneira usual de eliminar processos no Windows em um ambiente da GUI é usar o Gerenciador de Tarefas.
fonte
Com o cygwin, você pode usar uma matança de plataforma cruzada!
fonte