java bash命令问题

标签 java bash exit-code runtime.exec

<分区>

Possible Duplicate:
How do I get the bash command exit code from a Process run from within Java?

你好,我有一个简单的程序,它使用 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)

有关如何获取退出值的任何建议。谢谢

最佳答案

在尝试读取退出值之前,您是否尝试过调用 process.waitFor()

关于java bash命令问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5887471/

相关文章:

java - Spring MVC 4.1.7 警告 : No mapping found for HTTP request with URI [/user] in DispatcherServlet

perl - 如何使用shell脚本来监督一个程序?

linux - 如何创建一个多次调用自身的 bash 文件?

linux - 使用反引号时如何抑制命令输出?

python - IndexError : list index out of range , while finding the first non-consecutive number in a list in python

java - 使用 Docker 容器查看 Java liberty Bluemix 应用程序时出现 502 错误

java - 在 Java 中实现选择排序

java - 干净的 Android 项目中缺少 R.java

c - C 程序的意外退出代码(2 和 3)

perl - 从 GNU 并行获取退出状态值