В Unix или Linux легко изящно попросить завершить работающее приложение: вы посылаете ему сигнал SIGTERM. Если его идентификатор процесса 1234, вы можете просто запустить kill 1234
или kill -s TERM 1234
или kill -15 1234
.
Как я могу сделать то же самое в Windows?
Если я правильно помню, функция «Завершить задачу» в диспетчере задач (а не функция «Завершить процесс») использовалась для выполнения того, что я хочу. Но, начиная с Windows 8.1, это уже не так нежно; когда я использую эту функцию, это приводит к потере несохраненных данных.
Я не хочу писать код для этого. Если бы я это сделал, я бы спросил о переполнении стека. :)
Ответы:
Taskkill.exe
Энди Э пишет, что вы можете использовать
taskkill.exe
.Чтобы завершить процесс с идентификатором процесса 1234:
Чтобы прекратить notepad.exe:
Для получения дополнительной помощи:
Он добавляет:
Он прав. Я попытался использовать taskkill.exe (без
/f
), чтобы прекратить Notepad, и он работал как ожидалось. Блокнот спросил меня, хочу ли я сохранить несохраненный текст, который я ввел.Я использую домашнюю версию Windows 8.1. Похоже,
taskkill.exe
пришел в комплекте с Windows без дополнительной оплаты. Это вc:\windows\system32
.Или просто выйти
Если вы не хотите беспокоиться об этом, просто выйдите из своей учетной записи Windows, затем войдите снова.
Консольные приложения
Что касается консольных приложений (например, PowerShell), Крис Бекке добавляет :
источник
Вы можете использовать
rmlogotest.exe
(инструмент тестирования логотипа Restart Manager). Эта бесплатная утилита, написанная Microsoft, является частью Windows App Certification Kit.Чтобы получить последнюю версию Windows App Certification Kit, загрузите и запустите установщик Windows SDK. (Вы можете найти последнюю версию установщика Windows SDK, выполнив поиск в Google.) Снимите все флажки, кроме поля Windows App Certification Kit. Подождите, пока комплект будет загружен и установлен. Если я правильно помню, комплект составляет пару сотен мегабайт.
rmlogotest.exe
вероятно будет,C:\Program Files (x86)\Windows Kits\10\App Certification Kit
если вы используете версию 10 Windows SDK.Откройте командную строку. Перейдите в правильный каталог.
rmlogotest
Затем введите пробел, а затем идентификационный номер процесса.Если процесс «Перезапустить менеджер в курсе»,
rmlogotest
он корректно перезапустит его и сообщит вам «Проверка логотипа пройдена». В противном случаеrmlogotest
попросит его завершить корректно, а затем может сообщить вам «Ошибка проверки логотипа».Я попытался использовать
rmlogotest.exe
для завершения Notepad, и он работал как ожидалось. Блокнот спросил меня, хочу ли я сохранить несохраненный текст, который я ввел.(Если вам интересно, что такое Restart Manager, и позвольте мне объяснить. Restart Manager является частью Windows и используется установщиком Windows 4.0 и выше. Когда установщику Windows требуется перезаписать или удалить открытый файл, он использует пошаговый процесс. Он сообщает Restart Manager о необходимости корректно завершить процесс, использующий файл. Он перезаписывает файл. Затем он сообщает Restart Manager о необходимости запустить процесс снова.)
источник
GnuWIN32 имеет порты Windows с общими утилитами Linux, включая kill.exe
http://gnuwin32.sourceforge.net/
Поддерживаются следующие сигналы по имени или номеру
источник