मैं Process
ProcessBuilder
के माध्यम से सी कोड में निष्पादन योग्य चलाने के लिए उपयोग कर रहा हूं। मैं इस निकास मूल्यों पर प्रतिक्रिया करने के लिए Process.exitValue()
को पकड़ रहा हूं। मैंने देखा कि सभी निकास मूल्य निष्पादन योग्य नहीं हैं। उदाहरण के लिए, मुझे 13 9 का एक्जिट वैल्यू मिलता है और मेरे सी कोड में कहीं भी मैं 13 9 का एक्जिट वैल्यू वापस कर रहा हूं।Java Process.exitValue() से मानों का अर्थ क्या है?
मैं बाहर निकलने वाले मूल्यों का अवलोकन ढूंढने की कोशिश कर रहा हूं, लेकिन मुझे यह नहीं मिला, और अब मुझे मिला निकास मूल्य बाहर ओएस निर्भर हो सकता है। (मैं रास्ते से उबंटू का उपयोग कर रहा हूं)।
यह सब कुछ ठीक होने पर 0 के बारे में सुनिश्चित होने के लिए एकमात्र निकास मूल्य लगता है। क्या बाहर निकलने वाले मूल्यों के बारे में विनिर्देश हैं? क्या मुझे यकीन है कि एक निश्चित सीमा का उपयोग केवल अपने स्वयं के कार्यक्रम के लिए किया जा सकता है? ओएस के लिए कौन से निकास कोड आरक्षित हैं।
मुझे पता चला कि 13 9 शायद सी कोड में स्मृति त्रुटि है। मैं शायद से छुटकारा पाना चाहता हूँ। मैं बाहर निकलने से कोई भी मान सिंहावलोकन नहीं मिल सकता है (उदाहरण के लिए 139 = .....)
इस तरह से सरल कोड है:
ProcessBuilder p = new ProcessBuilder(executableName,
executableArguments);
final Process shell = p.start();
InputStream shellIn = shell.getInputStream();
int shellExitStatus = shell.exitValue();
नोट: उबंटू खोल में सी निष्पादन योग्य चल रहा है बिल्कुल कोई त्रुटि नहीं देता है (यानी बाहर निकलें मूल्य 0)। लेकिन, जावा में एक ही आदेश कर बाहर निकलने के मूल्य 139.
13 9 एक _Segmentation fault_ है। इसका मतलब है कि आपका _c-app_ स्मृति तक पहुंच रहा है, इसे एक्सेस नहीं करना चाहिए। – npe
[यह] (http://stackoverflow.com/a/4842719/828625) आपके प्रश्न का उत्तर मुझे विश्वास है। –
मिला [यह] (http://tldp.org/LDP/abs/html/exitcodes.html) भी, लेकिन मुझे नहीं पता कि यह आपके लिए कितना महत्वपूर्ण है। –