我有一個程序,它是:如何從Java內部運行的進程中獲取bash命令退出代碼?
import java.io.*;
import java.util.*;
public class ExecBashCommand {
public static void main(String args[]) throws IOException {
if (args.length <= 0) {
System.err.println("Need command to run");
System.exit(-1);
}
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec("./nv0914 < nv0914.challenge");
Process process1 = runtime.exec("echo ${?}");
InputStream is = process1.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
//System.out.printf("Output of running %s is:", Arrays.toString(args));
while ((line = br.readLine()) != null) {
System.out.println(line);
}
}
}
注:nv0914是一個bash可執行文件並nv0914.challenge是一個文本文件。 當我在終端運行任何正常的命令,並在那之後,如果我使用echo ${?}
檢查退出代碼。現在我想用一個程序來做同樣的事情,但程序只是給出輸出${?}
。請幫助我!
[process.exitValue()](http://download.oracle.com/javase/6/docs/api/java/lang/Process.html#exitValue())有什麼問題? – eggyal 2011-05-04 16:52:07
我回滾了這個問題的最後一個變化,其中OP部分實施了Peter Lawrey提供的解決方案。這是對這個問題的重大改變,並且使未來的讀者無法使用IMO。 – 2011-05-04 17:33:22