2012-03-02 7 views
1

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에 기록되는 모든 메시지를 가져와야합니다. 그 일을 어떻게 하죠?

+2

이미 실행중인 프로세스의 출력 스트림을 가져오고 싶습니까? – roni

+1

@roni - 나는 그가 원하는 것을 믿습니다. – Perception

+0

예, 이미 실행중인 프로세스의 출력이 필요합니다. –

답변

4

순수 자바를 사용할 수 없습니다. 낮은 수준의 OS 함수 호출을 만드는 네이티브 라이브러리를 작성하고 JNI를 통해 라이브러리를 Java에 노출해야합니다. 원래 수준에서조차 OS는 OS에 따라이 기능을 제공하는 시스템 호출을하지 않을 수도 있습니다. 이는 일반적으로 디버거에서만 수행되는 일종의 비정상적인 작업입니다. 예 : gdb.

2

프로세스를 명명 된 파이프에 쓰고 Java에서 해당 파이프를 읽도록 요청해야합니다. Windows가 아닌 것을 희망하십시오!