2016-08-23 5 views
0

을 내가 가지고있는 OUPUT 프로세스로 명령을 실행하고 반환하는 다음과 같은 방법 :는 잠시 후 자바 스레드/프로세스를 가입 - 자바

public String execute(String command) { 
     StringBuffer output = new StringBuffer(); 
     Process p; 
     try { 
      p = Runtime.getRuntime().exec(command); 
      BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream())); 
      String line = ""; 
      while ((line = reader.readLine()) != null) { 
       output.append(line + "\n"); 
      } 
     } catch (Exception e) { 
      logger.error(e.getMessage()); 
     } 
     return output.toString(); 
    } 

이 코드는 때마다 명령이 리턴 그러나 좋은입니다 top과 같이 계속 실행중인 프로세스의 경우 이는 결코 반환되지 않을 수 있습니다. 코드가 계속해서 실행될 필요는 없습니다. 스냅 샷을 캡처하기 만하면됩니다. 또는 3 초와 같은 시간이 지나면 시간이 초과 될 수 있습니다. 어떻게해야합니까?

답변

0

Process은 방법 waitFor을 갖는다. 타임 아웃을 강제하는 데 사용할 수 있습니다. 예 :