Java - 读取现有进程的输出流

Nam*_*ves 2 java process j9

我需要读取在 IBM j9(Windows Mobile 的模拟器 JVM)上运行的进程的输出。我试过这个:

Process p = Runtime.getRuntime().exec("j9.exe");

BufferedReader br = new BufferedReader(new InputStreamReader(
      p.getInputStream()));

String stringLog;
while ((stringLog = br.readLine()) != null) {
   System.out.println(stringLog + "\n");
}
Run Code Online (Sandbox Code Playgroud)

但它不起作用,因为它返回了 的新实例j9.exe,而不是现有进程。

我需要获取从 j9console(现有进程的)记录到 System.out 的所有消息。我该怎么做呢?

Mik*_*ark 5

使用纯Java 是不可能的。您必须编写一个本地库来进行低级操作系统函数调用,并通过 JNI 将该库公开给 Java。即使在本机级别,操作系统也可能没有提供此功能的系统调用,具体取决于操作系统 - 这是您要求的一项不寻常的任务,通常只能由调试器完成。例如gdb