java - जावा के भीतर से चलने वाली प्रक्रिया से मैं बाश कमांड निकास कोड कैसे प्राप्त करूं?



bash unix (1)

Process.waitFor () एक int देता है वह उस स्थान पर है जहां निकास कोड लौटा है यदि आप कोई असंबंधित प्रोग्राम शुरू करते हैं, तो उसका पिछला निकास कोड नहीं होगा, इसलिए वह उपयोगी कुछ भी वापस नहीं लौटाता है।

आप exitValue () भरोसेमंद तरीके से उपयोग नहीं कर सकते क्योंकि आप कार्यक्रम समाप्त होने से पहले इसे कॉल कर सकते हैं। आपको प्रतीक्षा करने के लिए कॉल करने के बाद उसे केवल कॉल करना चाहिए () (और यह वही निकास कोड प्रतीक्षा करेगी)

से बाहर निकलने के लिए Javadoc से मूल्य

फेंकता है: IllegalThreadStateException - यदि इस प्रक्रिया वस्तु द्वारा प्रतिनिधित्व उपप्रोसेस अभी तक समाप्त नहीं हुआ है।

मेरे पास एक प्रोग्राम है जो है:

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 एक बाश निष्पादन योग्य फ़ाइल है और nv0914.challenge एक पाठ फ़ाइल है। जब मैं टर्मिनल में किसी भी सामान्य कमांड को चलाता हूं और इसके बाद ही मैं echo ${?} अब मैं एक प्रोग्राम का उपयोग करके ऐसा करना चाहता हूं, लेकिन प्रोग्राम केवल ${?} आउटपुट दे रहा है कृपया मेरी मदद करें!






runtime.exec