В чем разница между процессом Kill Process и End Process в системном мониторе?

Когда я хочу завершить процесс с помощью системного монитора, мне предлагаются два быстрых способа: уничтожить процесс и завершить процесс. В чем разница между этими двумя?

2 ответа

Решение

Согласно руководству по системному монитору, вы обычно должны использовать "Завершить процесс", и только в случае неудачи используйте "Kill Process":

Обычно вы прекращаете процесс только в том случае, если не можете нормально завершить процесс, как описано в разделе Завершение процесса.

На техническом уровне это заставляет меня думать, что End Process отправляет SIGQUIT, что позволяет процессу перехватывать и выполнять очистку при необходимости, но если это не удается, Kill Process должен отправить SIGKILL, который должен насильственно завершить процесс, без шансов на восстановление. Используйте экономно!

Мне тоже было любопытно, поэтому я просто просмотрел исходный код и нашел нижеприведенное в application.cpp. В этом коде есть что-то еще, но я думаю, что они соответствуют параметрам, по крайней мере для System Monitor 3.8.2.1–3.199.3:

  • Stop Process = SIGSTOP (сигнал паузы, давайте продолжим позже с SIGCONT, процесс не прерывается)
  • End Process = SIGTERM (сигнал завершения, правильный путь, приложение может перехватить этот сигнал и инициировать задачи завершения работы, такие как очистка временного файла)
  • Процесс уничтожения = SIGKILL (сигнал уничтожения, экстремальный, используется только в том случае, если SIGTERM не работает, не запускает задачи выключения)

Посмотрите этот вопрос на Quora о сигналах SIGINT, SIGTERM, SIGKILL и SIGSTOP, чтобы получить хорошее объяснение всех сигналов kill/quit/shutdown и их различий.

Другие вопросы по тегам