Jaka jest różnica w Monitorze systemu między Kill Process a End Process?

14

Kiedy chcę zabić proces za pomocą Monitora systemu, widzę 2 szybkie sposoby: Zabij proces i Zakończ proces. Jaka jest różnica między tymi dwoma?

Luis Alvarado
źródło

Odpowiedzi:

9

Zgodnie z instrukcją Monitora systemu powinieneś normalnie używać „Zakończ proces” i tylko jeśli to się nie powiedzie, użyj „Zabij proces”:

Zwykle kończysz proces tylko wtedy, gdy nie możesz go normalnie zakończyć zgodnie z opisem w sekcji Aby zakończyć proces.

Na poziomie technicznym sprawia to, że myślę, że End Process wysyła SIGQUIT, który pozwala procesowi przechwytywać i przeprowadzać czyszczenie w razie potrzeby, ale jeśli to się nie powiedzie, Kill Process powinien wysłać SIGKILL, który powinien gwałtownie zakończyć proces, bez szans na odzyskanie. Używaj oszczędnie!

roadmr
źródło
6
SIGTERM to „uprzejmy” sposób zamknięcia programu, który wysyła „End Process”. gnu.org/software/libc/manual/html_node/Termination-Signals.html
Rick
9

Byłem też ciekawy, więc po prostu przejrzałem kod źródłowy i znalazłem poniżej w application.cpp . W tym kodzie jest coś więcej, ale myślę, że korelują one z opcjami, przynajmniej dla Monitora systemu od 3.8.2.1 do 3.19.3:

  • Stop Process = SIGSTOP ( sygnał pauzy , przejdźmy dalej do SIGCONT, nie zabija procesu)
  • End Process = SIGTERM ( sygnał zakończenia , właściwy sposób, aplikacja może przechwycić ten sygnał i zainicjować zadania zamknięcia, takie jak czyszczenie pliku tymczasowego)
  • Kill Process = SIGKILL ( sygnał zabicia , ekstremalny, użyj tylko, jeśli SIGTERM nie działa, nie zainicjuje zadań zamykania)

Zobacz to pytanie na Quora dotyczące sygnałów SIGINT, SIGTERM, SIGKILL i SIGSTOP, aby uzyskać dobre wyjaśnienie wszystkich sygnałów kill / quit / shutdown i ich różnic.

Podkreśl kod źródłowy

Elijah Lynn
źródło