2

Java で小さなデーモン アプリケーションを実装します。以下は私の要件です。誰かがそれを行う方法について何か提案をしてもらえますか?

  1. 別のプロセスを開始して監視するには (クラッシュした場合は再起動します)
  2. Windows と Linux の両方で実行 (SUSE が推奨)
  3. また、デーモン アプリ自体が終了することはありません。OS シャットダウン シグナルを受信すると、正常に終了するはずです。

Windows の場合、いくつかの Win32 API を呼び出して Process を開始し、その状態を監視できます。デーモン アプリは、ライフサイクルが Windows によって自動的に管理される Windows サービスである可能性があります。

問題は、Linuxに対してそれを行う方法です。さらに、2 つではなく両方の OS を処理する 1 つのコード セットを作成するにはどうすればよいでしょうか。

4

1 に答える 1

1

Java はプラットフォームに依存しないため、Java でこれを行うという全体的な考え方は、プラットフォーム固有の呼び出しを回避することです。したがって、Win32 API と、質問の Windows-vs-Linux 部分全体を忘れてください。

つまり、探しているのはjava.lang.Processです。プロセスは、Java が別のプロセスを管理するために使用するものです。他のプロセスが何であるか (Java またはネイティブ、または Python、または...) は関係ありません。

Process の Javadoc ページに記載されているように、ProcessBuilder または Runtime を使用して新しいプロセスを開始できます。その後、 Process.waitFor() を使用して、他のプロセスが終了したときに通知を受け取ることができます。これを実際にうまく使用するには、wait()、notify()、および InterruptedException の Java の概念に飛び込む必要があるかもしれません。これについては、ここからダウンロードできる Bruce Eckel の「Thinking In Java」をお勧めします。そこでは、第13章が役立つはずです。

監視対象プロセスの状態について詳しく知りたい場合は、デーモンと監視対象プロセスの間の通信手段を追加で確立する必要があります。これは、たとえば TCP ソケットである可能性があります。しかし、それは確かに別の問題に属しています。

于 2013-03-25T18:53:19.690 に答える