![](/img/trans.png)
[英]java could not read output of python process until close the input stream
[英]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.