2016-08-23 4 views
0

をI有しouputをプロセスとしてコマンドを実行し、返し、以下の方法:はしばらく後に、Javaでスレッド/プロセスを参加 - ジャワ

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を有する。タイムアウトを強制するのに使用できます。たとえば、

if ((p = Runtime.getRuntime().exec(execPath)) != null) && !p.waitFor(TIMEOUT_CONSTANT, TimeUnit.SECONDS)) { 
    p.destroyForcibly(); 
} 
関連する問題