web-dev-qa-db-ja.com

Windowsでは、実行中のプログラムに正常に終了するように依頼するにはどうすればよいですか?

UnixまたはLinuxでは、実行中のアプリケーションに正常に終了するよう依頼するのは簡単です。SIGTERMシグナルを送信するだけです。プロセスIDが1234の場合は、単にkill 1234またはkill -s TERM 1234またはkill -15 1234

Windowsで同じことをするにはどうすればよいですか?

正しく思い出せば、タスクマネージャーの "タスクの終了"機能( "プロセスの終了"機能ではない)が、私がやりたいことをしていた。しかし、Windows 8.1の時点では、それほど穏やかではありません。この機能を使用すると、保存されていないデータが失われます。

これを行うためにコードを記述したくありません。もしそうなら、私はスタックオーバーフローについて尋ねます。 :)

taskkill.exe

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             
0
teknopaul