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?
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?
Odpowiedzi:
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!
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:
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.