2

我将用 Java 实现一个小型守护程序应用程序。下面是我的要求。有人可以给我一些建议吗?

  1. 启动和监视另一个进程(如果崩溃则重新启动它)
  2. 在 Windows 和 Linux 上运行(首选 SUSE)
  3. 此外,守护程序应用程序本身永远不会退出,它应该在收到操作系统关闭信号时正常退出。

对于 Windows,我可以调用几个 Win32 API 来启动 Process 并监控其状态。守护程序应用程序可以是 Windows 服务,其生命周期由 Windows 自动管理。

问题是,如何针对 Linux 执行此操作。此外,如何编写一组代码来处理两个操作系统而不是两个?

4

1 回答 1

1

由于 Java 是独立于平台的,因此在 Java 中执行此操作的整个想法应该是避免特定于平台的调用。因此,请忘记 Win32 API 和问题的整个 Windows-vs-Linux 部分。

也就是说,您正在寻找的是java.lang.Process。进程是Java用来管理另一个进程的东西。其他进程是什么(Java 或本机,或 Python,或......)并不重要。

如 Process 的 Javadoc 页面所述,您可以使用 ProcessBuilder 或 Runtime 来启动一个新进程。然后,您可以使用 Process.waitFor() 在其他进程终止时获得通知。要真正成功地使用它,您可能需要深入研究 Java 的 wait()、notify() 和 InterruptedException 概念。为此,我可以推荐 Bruce Eckel 的“Thinking In Java”,可在此处下载。在那里,第 13 章应该有所帮助。

如果您想更多地了解受监控进程的状态,则需要在您的守护进程和受监控进程之间建立一些额外的通信方式。例如,这可能是一个 TCP 套接字。但这肯定属于另一个问题。

于 2013-03-25T18:53:19.690 回答