В чем разница между процессом 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 и их различий.