Saya tidak terbiasa dengan bagaimana proses dibunuh di Windows. Di Linux, kill "warm" mengirimkan sinyal (15) yang dapat ditangani oleh proses dengan membuat pengendali sinyal. Pembunuhan dingin adalah sinyal (9) yang ditangani oleh OS dengan mematikan proses dengan paksa.
Bagaimana saya bisa "membunuh" suatu proses di Windows? Bagaimana ini ditangani oleh OS dan oleh proses? Tindakan apa yang dilakukan OS? Apakah ada cara lintas platform untuk menanggapi permintaan penutupan / tutup?
SIGTERM
, 9 adalahSIGKILL
.Jawaban:
"End Task" (dan
taskkill
) muncul untuk mengirimWM_CLOSE
pesan ke jendela program. (Hal yang sama dilakukan ketika Anda mengklik tombol ×"Tutup".) Jika program tidak keluar dalam beberapa waktu, pengguna akan diminta untuk mengakhiri program dengan paksa."Bunuh Proses" dan
taskkill /f
gunakanTerminateProcess()
.sumber
ntsd -p <pid> -c q
, yang menggunakanntsd
debugger; Saya tidak yakin apa yang terjadi ketika sebuah program terbunuh seperti itu. ( pokestaskkill
dan menjawab dengan: "Proses ini hanya dapat dihentikan secara paksa (dengan opsi / F)." Jadi ya, satu-satunya pilihan yang tersisa adalahTerminateProcess()
.Sysinternals (sekarang bagian dari Microsoft) menawarkan utilitas yang disebut pskill yang dapat digunakan dari baris perintah untuk mematikan proses pada sistem lokal atau pada sistem jarak jauh.
Cara biasa untuk mematikan proses di Windows dalam lingkungan GUI adalah dengan menggunakan Task Manager.
sumber
dengan cygwin Anda bisa menggunakan cross platform kill!
sumber