Posso enviar CTRL-BREAK e / ou CTRL-C para um processo em execução no Windows?

5

Eu tenho um aplicativo do Windows Console que estará em execução por um longo período de tempo. Isso foi desenvolvido internamente e testes mostraram que, com o tempo, o uso da memória cresce e outras coisas ruins acontecem. Os desenvolvedores não podem corrigir todos os problemas a tempo para o lançamento, por isso estou procurando uma maneira de finalizar e reiniciar o processo periodicamente. Eu já tenho uma tarefa do Windows Scheduled que executa um arquivo em lote, verifica se o processo está sendo executado e, caso contrário, o inicia.

Agora eu preciso de algo que pare graciosamente. O aplicativo requisitou o evento CTRL-BREAK como uma solicitação para um encerramento controlado. Eu gostaria de enviar o CTRL-BREAK e se ele ainda não terminar depois de algum tempo, então eu poderia usar o taskkill para finalizá-lo com força. O taskkill parece alimentar um evento CTRL-CLOSE. Existe alguma maneira de alimentar o CTRL-BREAK para um processo a partir da linha de comando?

    
por Mutmansky 20.03.2012 / 14:32

2 respostas

3

Você pode enviar um controle de quebra com este pequeno utilitário.

link

note Certifique-se de usar start se estiver sendo executado a partir de um arquivo de lote.

    
por 20.03.2012 / 14:44
1

Não sei se um evento de intervalo é considerado um fechamento elegante para um aplicativo.

Dito isso, procure os utilitários ps em sysinternals, livres da Microsoft. Existe um comando pskill que pode ser usado para matar aplicativos e acredito que um pslist tenha o ID do processo. Analise e envie um sinal de morte para ele, veja se isso funciona para você.

    
por 20.03.2012 / 14:37