
Я знаю, что можно использовать Windowsутилита taskkillдля "уничтожения" неотвечающего процесса. Но что произойдет, если я вызову его для процесса, который запущен и не имеет проблем — попытается ли taskkill сначала завершить его обычным образом?
P.S. Причина, по которой я спрашиваю, заключается в том, что я хочу использовать taskkill из скрипта для закрытия одной программы, но я не буду его использовать, если он «насильно» завершает процесс программы, не дав ей сначала завершиться «корректно».
решение1
По умолчанию утилита taskkill отправит процессу сигнал WM_CLOSE. Это тот же сигнал, который отправляется при нажатии красного крестика в заголовке окна.
Хорошо написанное приложение будет прослушивать этот сигнал, инициировать очистку и закрытие.
Если он завис, он не сможет этого сделать, и поэтому считается неотзывчивым. Taskkill будет ждать нормального завершения работы, а затем запросит у пользователя безусловное завершение работы.
Вы можете использовать параметр /f, чтобы сразу перейти к безусловному завершению работы.
Поэтому, отвечая на ваш вопрос, если вы хотите не закрывать приложение принудительно, используйте taskkill без параметра /f.