2012-03-02 17 views
1

IBM j9(エミュレータJVMからWindows Mobileへ)で実行されているプロセスの出力を読み込む必要があります。私はこの試みた:Java - 既存のプロセスの出力ストリームを読み込みます。

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に記録されているすべてのメッセージを取得する必要があります。それをどうやってやりますか?

+2

既に実行中のプロセスの出力ストリームを取得したいのですか? – roni

+1

@ロン - 私は彼がしたいことだと思う。 – Perception

+0

ええ、私は既に実行中のプロセスの出力が必要です。 –

答えて

4

純粋なJavaを使用することはできません。低レベルのOS関数呼び出しを行うネイティブライブラリを作成し、JNI経由でライブラリをJavaに公開する必要があります。ネイティブレベルであっても、OSによっては、この機能を提供するシステムコールがOSによって異なる場合があります。これは通常はデバッガによってのみ行われる、珍しいタスクです。例えば。 gdb

2

プロセスを名前付きパイプに書き込むように手配し、Javaでそのパイプを読み取らせる必要があります。あなたはWindows上ではないことを願っています!

関連する問題