일전에 하신 대로 하면 될 것 같은데요..


[ Follow Ups ] [ Post Followup ] [ 자바 묻고 답하기 ]

Posted by 윤경구 on November 28, 1997 at 15:56:45:

In Reply to: 한가지 더 물어볼께요.. posted by 최대류 on November 28, 1997 at 13:59:46:

유닉스에서 실행되는 JDK가 없어서 테스트를 할 수는 없지만 일전에 쓰신 대로 하면 될 것 같습니다.

try {
	Process ps = rt.exec("netscape");
}catch (Exception e) {
   System.out.println("Error occurred!"+ e.toString());
}
try {
	BufferedReader br = new BufferedReader(new InputStreamReader(
                                ps.getInputStream()));
	do {
	     String str = br.readLine();
	     System.out.println(str);
	} while (str!=null);
}catch (IOException ie) {
   System.out.println("Error occurred!"+ ie.toString());
}
try {
   System.out.println("WAIT EXIT VALUE="+ps.waitFor());
}catch (InterruptedException ire) {
   System.out.println("Error occurred!"+ ire.toString());
}

자식 프로세스의 출력은 블로킹되므로 만약에 콘솔로 위 루틴을 쓰려면
별도의 쓰레드로 실행하여 전담해야 할 것입니다.
계속 무한 루프를 돌다가 IOException이 발생하면 종료하면 되지 않을까요?
아 그리고 넷스케이프 같은 프로그램이 콘솔로 출력하는 것은 표준 출력이 아니라 표준 에러(stderr)일 것입니다.
따라서 다음 줄을
BufferedReader br = new BufferedReader(new InputStreamReader(
                                ps.getInputStream()));
다음과 같이 변경하면 결과를 볼 수 있을 것도 같네요.
BufferedReader br = new BufferedReader(new InputStreamReader(
                                ps.getErrorStream()));
한번 시도해보고 알려주세요.


Follow Ups:



이어서 글올리기(답하기)

이름:
E-Mail:
제목:
내용:
관련 URL(선택):
URL 제목(선택):
관련 이미지 URL:


[ Follow Ups ] [ Post Followup ] [ 자바 묻고 답하기 ]