【问题标题】:Java - System process listenerJava - 系统进程监听器
【发布时间】:2016-01-28 04:59:52
【问题描述】:

有什么方法可以让我获取系统进程并收听它,以便了解它在做什么?我正在寻找的一个例子是这样的:

RunningProcess proc = new RunningProcess("notepad.exe");
ProcListener procListener = new ProcListener(proc);

监听类示例:

public class ProcListener implements ProcessListener {

    public ProcListener(...) {

    }

    @Override 
    public void started() {

    }

    @Override 
    public void terminated() {

    }

    @Override 
    public void ioOperation(IOoperation iop){

    }

}

有类似的吗?我还没找到。

【问题讨论】:

  • 我认为终止应该是可行的,方法是在自己的线程中等待进程的返回值。 IO 应该是可行的,但只能通过监视流进行 std 输入和输出(除非您使用本机代码和 JNI 或 JNA)。
  • 我的目的是监听正在运行的进程。如果进程还没有运行,Listener 会等到它运行并通知“start”。
  • ???当你告诉它开始时它就会开始,不早也不晚。
  • 我的意图不是创建进程或与进程交互,而是倾听它们。进程类(示例)创建系统运行进程的对象而不是新进程,然后启动或终止它或任何与进程相关的操作。但是如果我创建一个新进程并运行它,ProcessListener 将是相同的。
  • 那么您很可能是 SOL,不应该为此使用 Java。 Java 被构建为尽可能与操作系统无关,因此对于这类事情来说是一个非常糟糕的工具。您正在尝试做的事情将需要一种可以与操作系统非常融洽的语言。如果这是针对 Windows 平台的,请查看 C#,或者针对相同或其他任何平台的 C/C++。如果您必须使用 Java,那么您需要使用 JNI 或 JNA 或其他实用程序超越核心 Java。

标签: java process interface listener system


【解决方案1】:

如果您只想在另一个程序启动或终止时运行您的 jar,我建议使用Bill2's Process Manager。虽然这不是 Java 方法,但它可以在某些进程启动/终止时启动程序或批处理文件,并且您可以使用批处理文件执行 jar。安装后,您可能需要先更改选项中的语言。该软件简单易用。

【讨论】:

    猜你喜欢
    • 2021-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-15
    • 1970-01-01
    相关资源
    最近更新 更多