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

14

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

Луис Альварадо
источник

Ответы:

9

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

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

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

roadmr
источник
6
SIGTERM - это «вежливый» способ закрыть программу, который посылает «End Process». gnu.org/software/libc/manual/html_node/Termination-Signals.html
Рик,
8

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

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

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

Подсветка исходного кода

Элайджа Линн
источник