Jak dokładnie Windows zabija proces?

10

Nie znam sposobu, w jaki procesy są zabijane w systemie Windows. W Linuksie „ciepłe” zabicie wysyła sygnał (15), który proces może obsłużyć, tworząc instancję procedury obsługi sygnału. Zimne zabójstwo jest sygnałem (9), który system operacyjny obsługuje, zabijając proces z użyciem siły.

Jak mogę „zabić” proces w systemie Windows? Jak obsługuje system operacyjny i proces? Jakie działania wykonuje system operacyjny? Czy istnieje wieloplatformowy sposób reagowania na żądanie zabicia / zamknięcia?

ItdayD
źródło
1
Dla czytelników: Sygnał 15 to SIGTERM9 to SIGKILL.
user1686
Proszę zaakceptować odpowiedź, jeśli odpowiedź na twoje pytanie.
Oliver,

Odpowiedzi:

11

taskkillPojawia się „Zakończ zadanie” (i ), aby opublikować WM_CLOSEkomunikat w oknach programu. (To samo dzieje się po kliknięciu przycisku ׄZamknij”). Jeśli program nie zakończy się w określonym czasie, użytkownik zostanie poproszony o wymuszenie jego zakończenia.

„Zabij proces” i taskkill /fużyj TerminateProcess().

użytkownik1686
źródło
1
+1, WM_CLOSE wysłane do aplikacji; po X czasie poprosić użytkownika o wymuszenie zabicia, Windows usuwa proces z harmonogramu, zamyka wszystkie uchwyty (co może wyzwolić proces, jeśli jądro przetwarza jeden z tych uchwytów), a następnie odzyskuje miejsce w pamięci (jest to naprawdę krótka wersja procesu).
Chris S
Trzecim sposobem jest ntsd -p <pid> -c qużycie ntsddebuggera; Nie jestem pewien, co się stanie, gdy program zostanie zabity w ten sposób. ( pokes @Chris )
user1686
5
co się stanie, jeśli program nie ma okna?
IttayD
1
@IttayD: W Menedżerze zadań nie ma wpisu, w którym można by użyć polecenia „Zakończ zadanie” :) Właśnie próbowałem taskkilli odpowiada: „Ten proces można zakończyć tylko siłą (z opcją / F)”. Więc tak, pozostaje tylko wybór TerminateProcess().
user1686
1
@IttayD: Należy pamiętać, że w systemie Windows usługi (demony) są pisane inaczej niż aplikacje użytkownika; mogą otrzymywać zapytania o statusy i żądania kontrolne od Service Managera, dzięki czemu możliwe jest pełne zatrzymanie.
user1686
0

Sysinternals (obecnie część firmy Microsoft) oferuje narzędzie o nazwie pskill, którego można używać z wiersza poleceń do zabijania procesów w systemie lokalnym lub w systemach zdalnych.

Zwykłym sposobem na zabicie procesów w systemie Windows w środowisku GUI jest użycie Menedżera zadań.

Wstrzymano do odwołania.
źródło
-1

z cygwin możesz użyć zabijania na wielu platformach!

Tony Roth
źródło