«Завершить процесс» на вкладке «Процессы» вызывает TerminateProcess
, что является самым совершенным способом, которым Windows знает, как убить процесс.
Если он не исчезает, он в настоящий момент заблокирован в ожидании какого-либо ресурса ядра (возможно, с ошибочным драйвером) и ничего (кроме перезагрузки) вы не могли бы сделать, чтобы процесс ушел.
Посмотрите на эту запись в блоге с пути назад, когда: http://blogs.technet.com/markrussinovich/archive/2005/08/17/unkillable-processes.aspx
Системы на основе Unix, такие как Linux, также сталкиваются с проблемой, когда процессы могут пережить kill -9
, если они находятся в так называемом «бесперебойном спящем режиме» (обозначается top и ps как состояние D
), в этот момент процессы спят хорошо, что они не могут обрабатывать входящие сигналы (что делает kill
- отправка сигналов).
Обычно непрерывный сон не должен длиться долго, но, как и в Windows, сломанные драйверы или сломанные программы пользовательского пространства (vfork
без exec
) могут в конечном итоге спать в D
навсегда.