2011-05-04 44 views
1

可能重複:
How do I get the bash command exit code from a Process run from within Java?java的bash命令的問題

嗨,我已經使用bash命令./nv0914 < nv0914.challenge,其中nv0914是Unix的可執行文件和程序是一個簡單的解密另一個文件nv0914.challenge是用於解密的文本文件。現在,當我從bash運行它時,如果運行命令echo ${?},我得到的值是0,這很好。但是現在我必須實施一次攻擊,爲此我需要通過java程序打印退出值。我有這樣的代碼,就好像現在:

import java.io.*; 
    import java.util.*; 

    public class ExecBashCommand { 
    public static void main(String args[]) throws Exception { 


     Runtime runtime = Runtime.getRuntime(); 
     Process process = runtime.exec("./nv0914 < nv0914.challenge"); 

     /* InputStream is = process.getInputStream(); 
     InputStreamReader isr = new InputStreamReader(is); 
     BufferedReader br = new BufferedReader(isr); 
     String line;*/ 

System.out.println("Exit Code: "+process.exitValue()); 
     //System.out.printf("Output of running %s is:", Arrays.toString(args)); 

     /* while ((line = br.readLine()) != null) { 
     System.out.println(line); 
     }*/ 

    } 
    } 

但這個程序是給我的錯誤:

Exception in thread "main" java.lang.IllegalThreadStateException: process hasn't exited 
     at java.lang.UNIXProcess.exitValue(UNIXProcess.java:172) 
     at ExecBashCommand.main(ExecBashCommand.java:16) 

任何建議,如何讓出口值。謝謝

+1

你應該在你以前的相同問題中看到彼得的答案。它包含答案。你也應該接受它。 – 2011-05-04 17:36:14

回答

7

在嘗試讀取退出值之前,您是否嘗試過撥打process.waitFor()

+0

它只是給我一個空的終端......就好像它運行一個無限循環。 – Maverick 2011-05-04 17:42:23