UnixまたはLinuxでは、実行中のアプリケーションに正常に終了するよう依頼するのは簡単です。SIGTERMシグナルを送信するだけです。プロセスIDが1234の場合は、単にkill 1234
またはkill -s TERM 1234
またはkill -15 1234
。
Windowsで同じことをするにはどうすればよいですか?
正しく思い出せば、タスクマネージャーの "タスクの終了"機能( "プロセスの終了"機能ではない)が、私がやりたいことをしていた。しかし、Windows 8.1の時点では、それほど穏やかではありません。この機能を使用すると、保存されていないデータが失われます。
これを行うためにコードを記述したくありません。もしそうなら、私はスタックオーバーフローについて尋ねます。 :)
Andy E writestaskkill.exe
を使用できます。
プロセスID 1234のプロセスを終了するには:
taskkill /pid 1234
Notepad.exeを終了するには:
taskkill /im notepad.exe
さらにヘルプが必要な場合:
taskkill /?
彼は付け加えます:
/f
スイッチは強制終了を強制しますが、それを使用しないと終了信号を送信するだけなので、アプリケーションは正常に終了します。
彼は正しい。 taskkill.exe(/f
なし)を使用してメモ帳を終了しようとしたところ、期待どおりに動作しました。メモ帳で、入力した未保存のテキストを保存するかどうか尋ねられました。
Windows 8.1のホームバージョンを使用しています。 taskkill.exe
はWindowsに追加料金なしで含まれているようです。 c:\windows\system32
に入っています。
これに煩わされたくない場合は、Windowsユーザーアカウントからログアウトして、再度ログインしてください。
コンソールアプリケーション(PowerShellなど)に関しては、Chris Becke adds :
Windowsでコンソールアプリケーションを正常に閉じる実際の方法はありません。彼らはある種の優雅なクローズメカニズムをサポートする必要があります。
_rmlogotest.exe
_(Restart Manager Logo Test Tool)を使用できます。マイクロソフトが作成したこのフリーウェアユーティリティは、Windowsアプリ認定キットの一部です。
Windowsアプリ認定キットの最新バージョンを入手するには、Windows SDKインストーラーをダウンロードして実行します。 (Google検索を実行すると、最新のWindows SDKインストーラーを見つけることができます。)Windows App Certification Kitボックス以外のすべてのボックスをオフにします。キットがダウンロードされてインストールされるのを待ちます。私が正しく思い出せば、キットは数百メガバイトです。
Windows SDKのバージョン10を使用している場合、_rmlogotest.exe
_はおそらくC:\Program Files (x86)\Windows Kits\10\App Certification Kit
になります。
コマンドプロンプトを開きます。正しいディレクトリに移動します。 rmlogotest
、スペース、プロセスのプロセスID番号の順に入力します。
プロセスが「Restart Manager対応」の場合、rmlogotest
はプロセスを正常に再起動し、「Logo Validation Passed」と通知します。それ以外の場合、rmlogotest
は正常に終了するように要求し、「Logo Validation Failed」と表示する場合があります。
_rmlogotest.exe
_を使用してメモ帳を終了しようとしたところ、期待どおりに動作しました。メモ帳で、入力した未保存のテキストを保存するかどうか尋ねられました。
(リスタートマネージャーとは何か、疑問に思っている場合は説明しましょう。リスタートマネージャーはWindowsの一部であり、Windowsインストーラー4.0以降で使用されます。Windowsインストーラーが開いているファイルを上書きまたは削除する必要がある場合は、 stepプロセス。ファイルを使用しているプロセスを正常に終了するようにRestart Managerに指示します。ファイルを上書きします。次に、Restart Managerにプロセスを再開するように指示します。)
GnuWIN32には、kill.exeを含む一般的なLinuxユーティリティのWindowsポートがあります
http://gnuwin32.sourceforge.net/
名前または番号で次の信号をサポートします
λ kill -l
INT
ILL
FPE
KILL
SEGV
TERM
CHLD
ABRT