Я не знаю, как процессы убиты в Windows. В Linux «горячее» уничтожение посылает сигнал (15), который процесс может обработать, создав экземпляр обработчика сигнала. Холодное уничтожение - это сигнал (9), который ОС обрабатывает путем принудительного завершения процесса.
Как я могу «убить» процесс в Windows? Как это обрабатывается ОС и процессом? Какие действия выполняет ОС? Существует ли кроссплатформенный способ ответа на запрос на удаление / закрытие?
SIGTERM
, 9 естьSIGKILL
.Ответы:
«End Task» (и
taskkill
) появляется, чтобы отправитьWM_CLOSE
сообщение в окна программы. (То же самое происходит, когда вы нажимаете кнопку ׫Закрыть».) Если программа не завершает работу через некоторое время, пользователю предлагается принудительно завершить программу.«Убей процесс» и
taskkill /f
используйTerminateProcess()
.источник
ntsd -p <pid> -c q
, который используетntsd
отладчик; Я не уверен, что происходит, когда программа убивается таким образом. ( тыкает @Chris )taskkill
и он отвечает: «Этот процесс может быть принудительно завершен (с параметром / F)». Так что да, остается только один выборTerminateProcess()
.Sysinternals (теперь часть Microsoft) предлагает утилиту под названием pskill, которую можно использовать из командной строки для уничтожения процессов в локальной системе или в удаленных системах.
Обычный способ убить процессы в Windows в среде с графическим интерфейсом - это использовать диспетчер задач.
источник
с Cygwin вы можете использовать кроссплатформенное убийство!
источник