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

标签 java process j9

我需要读取在 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/

相关文章:

java - java中Console类有什么用?是指java控制面板控制台吗?请详细解释一下

c# - 什么是 Java 等同于 C# 中的打印值?

java - 等待完成的 Java 进程

java - J9 JVM (J2ME) 上的数据库

java - 无法从数据库获取数据

winforms - 从进程重定向 StandardOutput

c# - process.kill() 是否终止 WaitForExit() (没有时间限制)

java - 在哪里可以找到特定版本的 IBM JDK/JRE for Windows?

java - J2ME 上的 JDBC 支持

java - boolean 值未在构造函数中设置