こんにちは、私のJavaアプリケーションには以下の2つのプロセスがあります。
Process p1=some process;
Process p2=some process;
最初は完全に機能し始めますが、アプリケーションをリロードすると古いプロセスも実行されているため、実行中の場合は古いプロセスを強制終了したいだけです.プロセスIDを使用してプロセスを強制終了できることはわかっています.しかしこの p1 と p2 のプロセス ID を取得するにはどうすればよいですか?
アプリケーションでリロードイベントをキャッチし、終了する前に子プロセスを終了します。
それがうまくいかない場合は、おそらくデザインにバグがあります。そのバグを修正してみてください。本当に。私は真剣です。
回避策は、PIDをテキストファイルに書き込むことです。開始するときは、テキストファイルを読み、これが正しいプロセスであるかどうかを確認してから、強制終了します。
チェックがないと、他の誰かによって作成された完全に有効なプロセスを強制終了する可能性があります。私の推論はそうです:あなたがリロードするときあなたはプロセスを殺すことはできません。つまり、テキストファイルも削除できません。したがって、PIDファイルは常に存在します。最終的には、間違ったプロセスを強制終了します。それは年に一度起こります。それはあなたが去った/転職した/などの6ヶ月後に初めて起こります。再現することはほとんど不可能であるため、誰も何が起こっているのか理解できません。
他の人が言ったように、より自然な方法でプロセスを終了する方が良いでしょう.
ただし、実際に強制的に終了する必要がある場合は、Process オブジェクトで destroy() メソッドを呼び出すことができます。
また、コードをプロセスとして実行する必要がありますか? 一般に、より良い方法があります。