Windows bir süreci tam olarak nasıl öldürüyor?


11

Windows'da işlemlerin nasıl öldürüldüğünü bilmiyorum. Linux'ta, "sıcak" bir ölüm işlemi, bir sinyal işleyiciyi örnekleyerek işlemin gerçekleştirebileceği bir sinyal (15) gönderir. Soğuk öldürme, işletim sisteminin süreci güçlü bir şekilde öldürerek ele aldığı işarettir (9).

Windows'ta bir işlemi nasıl "öldürebilirim"? İşletim sistemi ve süreç tarafından nasıl ele alınır? İşletim sistemi hangi eylemleri gerçekleştirir? Bir öldürme / kapatma isteğine yanıt vermenin platformlar arası bir yolu var mı?


2
Okuyucular için: Sinyal 15 SIGTERM, 9 SIGKILL.
user1686

Sorunuz cevaplandıysa lütfen bir cevap kabul edin.
Oliver

Yanıtlar:


12

Programın pencerelerine taskkillbir WM_CLOSEmesaj göndermek için "Görevi Sonlandır" (ve ) görünür . (Aynı işlemi ×"Kapat" düğmesine tıkladığınızda da yapabilirsiniz .) Program bir süre içinde çıkmazsa, kullanıcıdan programı zorla sonlandırması istenir.

"Kill Süreci" ve taskkill /fkullanın TerminateProcess().


1
+1, WM_CLOSE uygulamaya gönderildi; X zamanı kullanıcıdan öldürmeye zorlamalarını istedikten sonra, Windows işlemi zamanlayıcıdan kaldırır, tüm tutamaçları kapatır (çekirdek, bu tutamaçlardan birini işliyorsa işlemi tetikleyebilir), sonra bellek alanını geri kazanır (bu gerçekten kısa sürümdür) sürecin).
Chris S

Üçüncü yol, hata ayıklayıcıyı ntsd -p <pid> -c qkullanan ntsd; Bir program bu şekilde öldürüldüğünde ne olacağından emin değilim. ( pokes @Chris )
user1686

5
programın penceresi yoksa ne olur?
IttayD

1
@IttayD: Sonra Görev Yöneticisi'nde "Görevi Sonlandır" ı kullanmak için herhangi bir giriş yok :) Ben sadece denedim taskkillve şöyle cevap veriyor: "Bu işlem sadece zorla sonlandırılabilir (/ F seçeneği ile)." Yani evet, geriye kalan tek seçenek TerminateProcess().
user1686

1
@IttayD: Windows'ta hizmetlerin (cinler) kullanıcı uygulamalarından farklı yazıldığını unutmayın; Service Manager'dan durum sorguları ve kontrol istekleri alabilirler, böylece zarif bir durma mümkündür.
user1686

0

Sysinternals (şimdi Microsoft'un bir parçası) , yerel sistemdeki veya uzak sistemlerdeki işlemleri öldürmek için komut satırından kullanılabilen pskill adlı bir yardımcı program sunar .

GUI ortamında Windows'ta işlemleri öldürmenin genel yolu Görev Yöneticisi'ni kullanmaktır.


-1

cygwin ile bir çapraz platform öldürme kullanabilirsiniz!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.