構成ファイルでユーザーが指定した他の任意のプロセスを呼び出せるようにしたいアプリケーションAがあります。
バッチスクリプトBは、ユーザーがAによって呼び出されることを望むそのようなプロセスの1つです。Bは、いくつかの環境変数を設定し、いくつかのメッセージを表示し、コンパイラCを呼び出していくつかの作業を行います。
Windowsは、任意のプロセスを正常に終了するための標準的な方法を提供しますか?Aがコンソールで実行され、CTRL+Cを受け取ったとします。これをBとCに渡すことはできますか?Aがウィンドウ内で実行され、ユーザーがウィンドウを閉じようとした場合、BとCをキャンセルできますか?
TerminateProcessはオプションですが、あまり良いものではありません。AがBでTerminateProcessを使用する場合、Cは実行を継続します。これは、Cが長時間実行されている場合に厄介な問題を引き起こす可能性があります。これは、Cの最初のインスタンスがまだ密かに機能している間に、同じファイルを操作するためにCの別のインスタンスを開始する可能性があるためです。さらに、TerminateProcessはクリーンな終了にはなりません。
GenerateConsoleCtrlEventは良さそうに聞こえ、すべてがコンソールで実行されているときに機能する可能性がありますが、ドキュメントにはCTRL + Cを自分のコンソールにのみ送信できると記載されているため、Aがウィンドウで実行されている場合は役に立ちません。
WindowsでSIGINTに相当するものはありますか?このような記事を見つけたいと思います:http://www.cons.org/cracauer/sigint.htmlforWindows。