No Windows, como posso solicitar normalmente que um programa em execução seja encerrado?

17

No Unix ou Linux, é fácil solicitar normalmente que um aplicativo em execução termine: você envia o sinal SIGTERM. Se o ID do processo for 1234, você pode simplesmente executar kill 1234ou kill -s TERM 1234ou kill -15 1234.

Como posso fazer a mesma coisa no Windows?

Se bem me lembro, o recurso "Finalizar tarefa" do Gerenciador de tarefas (não o recurso "Finalizar processo") costumava fazer o que eu queria. Mas, a partir do Windows 8.1, não é mais tão gentil; quando uso o recurso, ele perde dados não salvos.

Não quero escrever nenhum código para fazer isso. Se eu fizesse, eu perguntaria no Stack Overflow. :)

inesquecívelidSuporteMonica
fonte
2
Se você é desenvolvedor de software e deseja fazer isso de forma programática, consulte a pergunta Stack Overflow relacionada sobre como solicitar normalmente que um processo seja encerrado .
usar o seguinte
4
Não há nada de gracioso no Windows ........
Moab

Respostas:

17

taskkill.exe

Andy E escreve que você pode usar taskkill.exe.

Para finalizar o processo com o ID do processo 1234:

taskkill /pid 1234

Para finalizar o notepad.exe:

taskkill /im notepad.exe

Para mais ajuda:

taskkill /?

Ele adiciona:

O /fswitch forçaria a interrupção, mas não usá-lo apenas envia o sinal de finalização, para que o aplicativo seja fechado normalmente.

Ele tem razão. Tentei usar taskkill.exe (sem /f) para finalizar o Bloco de Notas, e funcionou como esperado. O Bloco de Notas me perguntou se eu queria ou não salvar o texto não salvo que eu havia inserido.

Estou usando a versão inicial do Windows 8.1. Parece que taskkill.exefoi incluído no Windows sem nenhum custo extra. Está dentro c:\windows\system32.

Ou simplesmente saia

Se você não quiser se preocupar com nada disso, basta sair da sua conta de usuário do Windows e depois fazer login novamente.

Aplicativos de console

Em relação aos aplicativos de console (por exemplo, PowerShell), Chris Becke acrescenta :

Não existe uma maneira real de fechar aplicativos de console normalmente no Windows. Eles precisam suportar algum tipo de mecanismo de fechamento gracioso.

inesquecíveis
fonte
Observe que isso não replica exatamente o que acontece no logout ou desligamento; para isso, consulte stackoverflow.com/questions/520910/…
Matt McHenry
5

Você pode usar rmlogotest.exe(a ferramenta de teste do logotipo do Restart Manager). Este utilitário de freeware, escrito pela Microsoft, faz parte do Windows App Certification Kit.

Para obter a versão mais recente do Windows App Certification Kit, baixe e execute o instalador do Windows SDK. (Você pode encontrar o instalador mais recente do Windows SDK fazendo uma pesquisa no Google.) Desmarque todas as caixas, exceto a caixa Kit de certificação de aplicativos do Windows. Aguarde o download e instalação do kit. Se bem me lembro, o kit tem algumas centenas de megabytes.

rmlogotest.exeprovavelmente estará presente C:\Program Files (x86)\Windows Kits\10\App Certification Kitse você estiver usando a versão 10 do Windows SDK.

Abra um prompt de comando. Mude para o diretório correto. Digite rmlogotestum espaço e o número de identificação do processo do processo.

Se o processo "Reiniciar o Gerenciador ciente", ele rmlogotestserá reiniciado normalmente e informará "Validação do logotipo aprovada". Caso contrário, rmlogotestsolicitará que ele termine normalmente e poderá dizer "Falha na validação do logotipo".

Tentei usar rmlogotest.exepara finalizar o Bloco de Notas e funcionou como esperado. O Bloco de Notas me perguntou se eu queria ou não salvar o texto não salvo que eu havia inserido.

(Caso você queira saber o que é e o que faz o Restart Manager, deixe-me explicar. O Restart Manager faz parte do Windows e é usado pelo Windows Installer 4.0 ou superior. Quando o Windows Installer precisa substituir ou excluir um arquivo aberto, ele usa três Ele diz ao Restart Manager para finalizar normalmente o processo que está usando o arquivo. Ele substitui o arquivo. Depois, diz ao Restart Manager para iniciar o processo novamente.)

inesquecívelidSuporteMonica
fonte
0

O GnuWIN32 possui portas do Windows de utilitários comuns do Linux, incluindo kill.exe

http://gnuwin32.sourceforge.net/

Suporta os seguintes sinais por nome ou número

λ kill -l                                                                                                                                                                                                                                                                
INT                                                                                                                                                                                                                                                                      
ILL                                                                                                                                                                                                                                                                      
FPE                                                                                                                                                                                                                                                                      
KILL                                                                                                                                                                                                                                                                     
SEGV                                                                                                                                                                                                                                                                     
TERM                                                                                                                                                                                                                                                                     
CHLD                                                                                                                                                                                                                                                                     
ABRT             
teknopaul
fonte