我需要读取在 IBM j9(模拟器 JVM 到 windows 移动)上运行的进程的输出。我试过这个:
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 的消息。我该怎么做?
最佳答案
使用纯 Java 是不可能的。您将不得不编写一个进行低级操作系统函数调用的 native 库,并通过 JNI 将该库公开给 Java。即使在 native 级别,操作系统也可能没有提供此功能的系统调用,具体取决于操作系统——这是您要求的一项不寻常的任务,通常只能由调试器完成。例如。 gdb .
关于Java - 读取现有进程的输出流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9539863/