1

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

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");
}

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

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

4

2 回答 2

4

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

于 2012-03-02T22:07:30.323 回答
2

您必须安排进程将其输出写入命名管道,并让 Java 读取该管道。希望你不在 Windows 上!

于 2012-03-03T01:25:23.030 回答