【问题标题】:Process management and EventWaiter in JavaJava中的进程管理和EventWaiter
【发布时间】:2012-11-16 07:15:22
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: java linux process event-wait-handle


    【解决方案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”,可在here 下载。在那里,第 13 章应该会有所帮助。

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

    【讨论】:

      猜你喜欢
      • 2018-03-04
      • 1970-01-01
      • 2021-02-02
      • 2012-01-07
      • 2011-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多