Runtime runtime = Runtime.getRuntime();
Process p = runtime.exec(cmd);
is = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((line = is.readLine()) != null)
System.out.println(line);
p.waitFor();
.
.
.
.
하면, 중간에 멈춰서 진행이 안됩니다. hang이 걸리는 거죠.
해당 응용프로그램을 콘솔에서, 직접 실행하면, 파일 변환 과정이 출력됩니다.
파일 변환 프로그램이므로...한 라인에서 진행율이 변경되는 형태의 출력입니다.
그 때문인 것 같기도 하구요.
작업관리자에서 프로세스를 보면...
손으로 직접 실행하거나, Process로 반환 받지 않고 실행할 경우...
정상적으로 해당 응용프로그램이 작업관리자 프로세스에 올라 왔다가 파일 변환 종료 후
사라지고요...
두번째 예와 같이 Process로 받아서 처리하려면,
작업관리자 프로세스에 정상적으로 올라 와서...일부 수행하다가...
CPU 사용량 0이 되면서 그대로 멈춰 있습니다.
waitFor(); 부분까지도 못오는 것 같구요.
작업관리자에서 프로세스를 강제로 죽이면...
그제서야 waitFor(); 이후의 부분이 진행됩니다.
이유를 모르겠네요.
많은 코멘트 부탁드립니다.
제목 : Re: Runtime exec() 실행 시 멈춤 현상
글쓴이: 손님(guest) 2008/04/16 10:39:10 조회수:938 줄수:4
doEncoder.exe의 출력이 어떤지 알 수 없어 추측만 할 수 밖에 없을 것 같은데요,
java.io.BufferedReader.readLine()은 carridge return이나 line feed가 나올 때까지
대기합니다. 이 부분을 염두에 두시고 프로그램의 출력을 관찰해보시면
답을 찾으실 수 있으리라 생각합니다.
제목 : Re: 신경 써 주셔서 감사합니다.
글쓴이: 불만세력(guest) 2008/04/16 13:04:03 조회수:920 줄수:22