Windowsはどのようにしてプロセスを強制終了しますか?


10

Windowsでプロセスが強制終了される方法に慣れていません。Linuxでは、「ウォーム」キルはシグナル(15)を送信し、プロセスはシグナルハンドラーをインスタンス化することによって処理できます。コールドキルは、OSがプロセスを強制的に強制終了することによって処理するシグナル(9)です。

Windowsでプロセスを「強制終了」するにはどうすればよいですか?OSとプロセスではどのように処理されますか?OSはどのようなアクションを実行しますか?kill / closeリクエストに応答するクロスプラットフォームの方法はありますか?


1
読者の場合:信号15はSIGTERM、9はSIGKILLです。
user1686 2010年

質問に対する回答があった場合は、回答を受け入れてください。
Oliver

回答:


11

「タスクの終了」(およびtaskkill)はWM_CLOSE、プログラムのウィンドウにメッセージを投稿するように表示されます。(×「閉じる」ボタンをクリックした場合も同様です。)プログラムがしばらくして終了しない場合、ユーザーはプログラムを強制終了するように求められます。

「キルプロセス」とtaskkill /f使用TerminateProcess()


1
+ 1、WM_CLOSEがアプリに送信されます。X時間後にユーザーに強制終了を要求した後、Windowsはスケジューラからプロセスを削除し、すべてのハンドルを閉じ(カーネルがこれらのハンドルの1つを処理している場合はプロセスがトリップする可能性があります)、メモリ領域を再利用します(これは本当に短いバージョンです)プロセスの)。
クリスS

3番目の方法はntsd -p <pid> -c qで、ntsdデバッガーを使用します。プログラムがそのようにして殺されたとき、私は何が起こるかわかりません。(pokes @Chris
user1686

5
プログラムにウィンドウがない場合はどうなりますか?
IttayD 2010年

1
@IttayD:次に、タ​​スクマネージャーに「タスクの終了」を使用するためのエントリがありません:)私は試したところtaskkill、「このプロセスは(/ Fオプションを使用して)強制的にのみ終了できます」と応答しました。そうです、残っている唯一の選択肢はですTerminateProcess()
user1686 2010年

1
@IttayD:Windowsでは、サービス(デーモン)はユーザーアプリケーションとは異なる方法で記述されることに注意してください。ステータスクエリを受信し、Service Managerから要求を制御できるため、適切な停止が可能です。
user1686 2010年

0

Sysinternals(現在はMicrosoftの一部)には、コマンドラインからローカルシステムまたはリモートシステムのプロセスを強制終了するために使用できるpskillと呼ばれるユーティリティが用意されています。

GUI環境でWindowsのプロセスを強制終了する通常の方法は、タスクマネージャを使用することです。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.