Назад | Перейти на главную страницу

Могу ли я отправить CTRL-BREAK и / или CTRL-C запущенному процессу в Windows?

У меня есть консольное приложение Windows, которое будет работать в течение длительного периода времени. Это было разработано собственными силами, и тесты показали, что со временем использование памяти растет, и в результате возникают другие неприятности. Разработчики не могут исправить все проблемы к моменту выпуска, поэтому я ищу способ периодически завершать и перезапускать процесс. У меня уже есть запланированная задача Windows, которая запускает командный файл, проверяет, запущен ли процесс, а если нет, запускает его.

Теперь мне нужно что-то, что изящно его останавливает. Приложение присвоило событие CTRL-BREAK как запрос на управляемое завершение работы. Я хотел бы отправить ему CTRL-BREAK, и если он все еще не закончится через некоторый период времени, я мог бы использовать Taskkill, чтобы завершить его принудительно. taskkill, кажется, подает ему событие CTRL-CLOSE. Есть ли способ передать CTRL-BREAK процессу из командной строки?

Вы можете отправить контрольную паузу с помощью этой маленькой утилиты.

http://www.latenighthacking.com/projects/2003/sendsignal/

нота Обязательно используйте start если вы запускаете его из командного файла.

Я не знаю, считается ли событие прерывания изящным закрытием приложения.

Тем не менее, ищите утилиты ps в sysinternals, бесплатно от Microsoft. Есть команда pskill, которую можно использовать для уничтожения приложений, и я считаю, что pslist позволяет получить идентификаторы процесса. Разберите его и отправьте ему сигнал об уничтожении, посмотрите, сработает ли это для вас.