【问题标题】:java bash command problem [duplicate]java bash命令问题[重复]
【发布时间】:2011-05-04 17:33:41
【问题描述】:

可能重复:
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)

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

【问题讨论】:

  • 您应该在之前的相同问题中看到 Peter 的回答。它包含答案。你也应该接受它。

标签: java bash exit-code runtime.exec


【解决方案1】:

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

【讨论】:

  • 它只是给了我一个空终端......好像它在运行一个无限循环。
猜你喜欢
  • 2020-03-21
  • 2018-04-01
  • 2016-04-27
  • 1970-01-01
  • 1970-01-01
  • 2013-05-17
  • 2019-03-13
  • 1970-01-01
相关资源
最近更新 更多