내멋대로 해라

icehan.egloos.com

포토로그 마이가든



[미결]Process 죽이기 - Runtime.exec() tip&tech

Runtime.exec()를 사용할 때, 프로세스를 제때 죽여야 할 필요가 있다.
다음과 같이 구현하기는 했는데.. 아직 100% 보장은 못하겠다.
(인위적으로 프로세스 오류를 발생시키기가 힘들군)
응답없이 멈춰 버리면 대책이 없다.
        
        Process p = Runtime.exec(....);
        p.waitFor();

        // process의  exit여부를 확인해서 log를 남긴다.
        BufferedReader reader;
        if (p.exitValue () != 0) 
        {
             reader = new BufferedReader (new InputStreamReader (p.getErrorStream ()));
             while (reader.ready())
              logger.error ("[error]="+reader.readLine ());

            // 죽인다.
             p.destroy();
             throw new Exception();
         }
 
         // 확인사살
         if ( p != null ) p.destroy();

http://www.okjsp.pe.kr/seq/93438

트랙백

이 글과 관련된 글 쓰기 (트랙백 보내기)
TrackbackURL : http://icehan.egloos.com/tb/3570376 [도움말]

덧글

  • conanoc 2007/07/05 16:19 # 답글

    코드가 좀 이상한데요? 프로세스가 비정상 종료되면 이걸 다시 죽인다?(이미 비정상 종료로 죽은 것인데)
  • icehan 2007/07/10 10:23 # 답글

    음.. 비정상 종료가 아니라 응답없음을 처리하려고 했습니다.
    그런데, p.waitFor(); 에서 계속 기다리게 될 테니, 이 코드로는 처리가 안될 것 같습니다.

    따로 이놈을 감시하는 Thread를 만들어야 할지.. 고민중(이라기 보다는 약간 뒤로 미뤄두었죠)
덧글 입력 영역