2012-05-07 11 views
6

मैं एक साधारण सी कार्यक्रम "./my_program"कमांड लाइन से सी-प्रोग्राम का पूरा रिटर्न वैल्यू पाने के लिए मुझे क्या करना चाहिए?

#include <stdio.h> 

int main (int argc , char **argv) { 


    unsigned int return_result = 0x474; 
    printf("return_result = %d = 0x%x \n",return_result,return_result); 
    return return_result; 

} 

नतीजतन, इस कार्यक्रम के निशान है:

return_result = 1140 = 0x474 

मैं bash स्क्रिप्ट के भीतर सी कार्यक्रम का एक वापसी मान प्राप्त करना चाहते हैं। इस लिंक के अनुसार Anyway to get return value of c program from command line? मुझे यह चर $ से प्राप्त करना चाहिए?

लेकिन जब मैं इस तरह के आदेशों परिणाम का शुभारंभ:

./my_program 
echo $? 

मैं

116 

प्राप्त यह स्पष्ट रूप से है, कि 116 = 0x74 (सबसे कम बाइट)। लेकिन मैं पूरी तरह से हस्ताक्षरित int मान प्राप्त करना चाहता हूं। क्या गलत है? कमांड लाइन से सी-प्रोग्राम का पूरा रिटर्न वैल्यू पाने के लिए मुझे क्या करना चाहिए? यह केवल "हस्ताक्षरित int" प्रकार के बारे में नहीं है। यदि मैंने कुछ जटिल प्रकार बनाया है, उदाहरण के लिए, - संरचना में मुझे क्या करना चाहिए।

मैंने कोशिश की यह:

return ((unsigned int) return_result_section_size); 

यह काम नहीं करता।

उत्तर

6

यूनिक्स पर निकास कोड restricted to a single byte हैं। यदि आप अधिक उत्पादन करना चाहते हैं, तो आप इसे stdout या इसके बजाय फ़ाइल में लिख सकते हैं।

फिर सी मानक डिक्री क्यों है कि mainint और char नहीं देता है? मुझे नहीं पता ...

+0

शायद क्योंकि उन संख्याओं के लिए 'int' का उपयोग करना आम है जिन्हें किसी भी चीज की आवश्यकता नहीं है। इसी कारण से यह 'int argc' है और' हस्ताक्षरित int argc' – ThiefMaster

+0

नहीं है क्योंकि यूनिक्स एक बाइट में निकास कोड को प्रतिबंधित करता है इसका मतलब यह नहीं है कि मानक को अन्य प्लेटफ़ॉर्म पर समान प्रतिबंध लागू करना चाहिए। – jamesdlin

+0

ठीक है, उत्तर के लिए धन्यवाद! –

0

मुख्य से लौटाया गया मूल्य echo $ का उपयोग करके मुद्रित किया जा सकता है? निष्पादन के साथ किए जाने के बाद। मुख्य से वापसी मूल्य आमतौर पर निष्पादन स्थिति को इंगित करने के लिए उपयोग किया जाता है। अधिकतम मूल्य 512 तक सीमित है। यदि आप 512 से अधिक मूल्य वापस करने का प्रयास करते हैं, तो 512% वैल $ में सेट किया जाएगा?

+0

हो सकता है, आप कहें "अधिकतम मूल्य 255 तक सीमित है"? मैंने अभी 474 लौटने की कोशिश की है। परिणाम 474 नहीं है। –

+0

जादू के लिए अधिकतम 512 होना आवश्यक होगा। और आपका सूत्र गलत है। यह 'वैल% MAX' होना चाहिए। –

+0

हम्म ... मुझे लगता है कि मैं अधिकतम मूल्य के लिए गलत था। अधिकतम मान बाइट तक सीमित है - 255. –

संबंधित मुद्दे