prunsrvを使用して Windows サービスを作成しています。プロセスのステータス (実行中、停止中) を照会できるかどうか、またはプロセスが存在するかどうかを尋ねたいと思います。また、Javaプログラムでpidファイルの内容を読みたいと思います。
質問する
684 次
1 に答える
3
はい、秘訣があります。サービスの起動コードでローカル ソケットを作成します。ソケットの作成中にエラーが発生した場合は、サービスのインスタンスが既に実行されていることがわかります。
サービスが稼働していることを確認したい場合は、ソケットに接続できます。それが失敗した場合、プロセスは存在しません。
また、このソケットを介してサービスの PID を返すことができるため、「モニター」プログラムはログ パスと PID ファイル名を知る必要がありません。また、開始/停止メソッドを実装すると、モニターにサービスのステータスを伝えることもできます。
これの最大の利点は、何らかの理由でサービスが終了したときに OS がソケットを確実に閉じることです。2 つ目の利点は、これが OS に依存せずに機能することです。これを Linux または Mac に移行する必要がある場合でも、コードを変更する必要はありません。
于 2012-05-28T14:13:50.937 に答える