1

重複の可能性:
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)

終了値を取得する方法に関する提案。ありがとう

4

1 に答える 1

7

終了値を読み取る前に呼び出しを試みprocess.waitFor()ましたか?

于 2011-05-04T17:38:25.340 に答える