そのOSで実行中のプロセスが停止するたびにOSから通知されるプログラムを作成したいと思います。
以前に存在したプロセスが停止した場合、毎回自分でポーリングして比較したくありません。プロセスの終了が発生するたびに、プログラムが OS によって警告されるようにします。
どうすればいいですか?いくつかのサンプル コードは非常に役立ちます。
PS: Java/C++ でのアプローチを探しています。
そのOSで実行中のプロセスが停止するたびにOSから通知されるプログラムを作成したいと思います。
以前に存在したプロセスが停止した場合、毎回自分でポーリングして比較したくありません。プロセスの終了が発生するたびに、プログラムが OS によって警告されるようにします。
どうすればいいですか?いくつかのサンプル コードは非常に役立ちます。
PS: Java/C++ でのアプローチを探しています。
PsSetCreateProcessNotifyRoutine()が必要なようです。開始するには、次の記事を参照してください。
Unix では、sigchld
シグナルを使用してプロセスの終了を通知できます。ただし、これには、監視対象のプロセスが監視プロセスの子プロセスであることが必要です。
Windows では、プロセスへの有効なハンドルが必要になる場合があります。を使用して自分でプロセスを生成するCreateProcess
と、ハンドルを無料で取得できます。それ以外の場合は、別の方法で取得する必要があります。WaitForSingleObject
その後、ハンドルを呼び出してプロセスが終了するのを待つことができる場合があります。
申し訳ありませんが、これに関するサンプル コードはありません。Windows でのプロセス ハンドルの待機が、プロセスの終了を実際に待っているかどうかもわかりません (プロセス ハンドルが「シグナル状態」などになる他の「重大な」状態とは対照的に)。