【发布时间】: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