簡體   English   中英

Java-讀取現有過程的輸出流

[英]Java - Read output stream of existing process

我需要閱讀在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");
}

但是它不起作用,因為它返回了j9.exe的新實例,而不是現有進程。

我需要從(現有過程的)j9console獲取所有正在記錄到System.out的消息。 我將如何去做?

使用純Java是不可能的。 您將必須編寫一個進行低級OS函數調用的本機庫,然后通過JNI將庫公開給Java。 即使是在本機級別,根據操作系統的不同,操作系統可能也沒有提供此功能的系統調用-這是您要執行的一項不尋常的任務,通常只能由調試器完成。 例如gdb

您將必須安排該進程將其輸出寫入命名管道,並讓Java讀取該管道。 希望您不在Windows上!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM