我需要读取在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的消息。我该怎么做呢?
答案 0 :(得分:4)
使用纯Java是不可能的。您必须编写一个本机库来进行低级OS函数调用,并通过JNI将库公开给Java。即使在本机级别,操作系统也可能没有提供此功能的系统调用,具体取决于操作系统 - 这是您要求的一项不寻常的任务,通常只能由调试器完成。例如。 gdb
答案 1 :(得分:2)
您必须安排进程将其输出写入命名管道,并让Java读取该管道。希望你不在Windows上!