जवाबों:
C भाषा में exit(0)और क्या अंतर exit(1)है?
exit(0)सफल कार्यक्रम समाप्ति को इंगित करता है और यह पूरी तरह से पोर्टेबल है, जबकि
exit(1)(आमतौर पर) असुरक्षित समाप्ति को इंगित करता है। हालाँकि, यह उपयोग गैर-पोर्टेबल है।
ध्यान दें कि C मानक परिभाषित करता है EXIT_SUCCESSऔर EXIT_FAILUREC प्रोग्राम से समाप्ति की स्थिति वापस करता है।
0और EXIT_SUCCESSसफल समाप्ति को इंगित करने के लिए मानक द्वारा निर्दिष्ट मान हैं, हालांकि, केवल EXIT_FAILUREअसुरक्षित समाप्ति पर लौटने के लिए मानक मान है। 1हालांकि कई कार्यान्वयनों में इसका उपयोग किया जाता है।
संदर्भ:
C99 मानक: 7.20.4.3 exitफ़ंक्शन
पैरा 5
अंत में, नियंत्रण मेजबान वातावरण में वापस आ जाता है। यदि स्थिति का मूल्य शून्य है या
EXIT_SUCCESS, स्थिति के सफल समापन के कार्यान्वयन-डे of एनईडी रूप को वापस कर दिया जाता है। यदि स्थिति का मान हैEXIT_FAILURE, तो स्थिति के असफल-समाप्ति के कार्यान्वयन-डे of ned प्रपत्र को लौटा दिया जाता है। अन्यथा दी गई स्थिति कार्यान्वयन-डे status ned है।
exitअपनी चिंताओं के कम से कम है (नरक, वहाँ भी नहीं हो सकता है हो सकता है एक सी पुस्तकालय उपलब्ध वहाँ। कुछ भी पोर्टेबल है !!! 111)।
exitकिसी भी विषम मान के साथ कॉल करना सफलता को दर्शाता है। exit(0)सी अनुरूपता के लिए एक विशेष मामले के रूप में माना जाता है। हां, POSIX एक मानक है, लेकिन सभी सिस्टम इसके अनुरूप नहीं हैं। यदि आप कोड लिखना चाहते हैं जो POSIX को मानता है, तो आप ऐसा करने के लिए स्वतंत्र हैं, लेकिन यह आपके कोड की पोर्टेबिलिटी को सीमित करता है।
exit सी भाषा में एक एक्ज़िट स्टेटस का प्रतिनिधित्व करने वाला पूर्णांक लेता है।
आमतौर पर, 0 से बाहर निकलने की स्थिति को एक सफलता माना जाता है, या प्रोग्राम के सफल निष्पादन के कारण जानबूझकर बाहर निकलना।
1 से बाहर निकलने की स्थिति को विफलता माना जाता है, और आमतौर पर इसका मतलब है कि कार्यक्रम को किसी कारण से बाहर निकलना पड़ा, और सामान्य कार्यक्रम प्रवाह में सफलतापूर्वक सब कुछ पूरा करने में सक्षम नहीं था।
यहाँ एक GNU संसाधन बाहर निकलने की स्थिति के बारे में बात कर रहा है।
जैसा कि @Als ने कहा है, 0 और 1 के स्थान पर दो स्थिरांक का उपयोग किया जाना चाहिए।
EXIT_SUCCESS मानक शून्य द्वारा परिभाषित किया गया है।
EXIT_FAILURE एक होने के लिए मानक द्वारा प्रतिबंधित नहीं है, लेकिन कई सिस्टम इसे एक के रूप में लागू करते हैं।
अंतर यह है कि पर्यावरण में लौटाया गया मूल्य 0पूर्व के मामले 1में और बाद के मामले में है:
$ ./prog_with_exit_0
$ echo $?
0
$
तथा
$ ./prog_with_exit_1
$ echo $?
1
$
यह भी ध्यान रखें कि मैक्रो मूल्य EXIT_SUCCESSऔर EXIT_FAILUREकरने के लिए एक तर्क के रूप में इस्तेमाल किया exitसमारोह कार्यान्वयन परिभाषित कर रहे हैं लेकिन आम तौर पर क्रमशः की तैयारी में हैं 0और एक गैर शून्य संख्या। (POSIX EXIT_SUCCESS0 होना आवश्यक है)। तो आमतौर पर exit(0)एक सफलता और exit(1)विफलता का मतलब है ।
exitफ़ंक्शन में एक तर्क के साथ एक फ़ंक्शन कॉल उसी तर्क के साथ mainकथन के बराबर है return।
एग्जिट एक सिस्टम कॉल है जिसका उपयोग रनिंग प्रक्रिया को पूरा करने के लिए किया जाता है, जहाँ से इसे कॉल किया जाता है। बाहर निकलने के पैरामीटर का उपयोग माता-पिता को बाल प्रक्रिया की स्थिति के बारे में सूचित करने के लिए किया जाता है। तो, एक प्रक्रिया के सफल निष्पादन और त्रुटि को चिह्नित करने के लिए (1) से बाहर निकलने के संकेत के लिए (0 और अक्सर इस्तेमाल किया जा सकता है) से बाहर निकलें (और अक्सर उपयोग किया जाता है)। संदर्भ लिंक
बाहर निकलें (0) बाहर निकलने के बराबर है (EXIT_SUCCESS)।
बाहर निकलें (1) बाहर निकलने के बराबर है (EXIT_FAILURE)।
असफलता पर, कोई भी सकारात्मक मूल्य प्रक्रिया से बाहर निकलने के लिए वापस आ जाता है, जिसे आप $ का उपयोग करके शेल पर पा सकते हैं।
128 से अधिक मूल्य जो सिग्नल द्वारा समाप्ति का कारण बनता है। इसलिए यदि सिग्नल द्वारा समाप्त किए गए किसी भी शेल कमांड को रिटर्न स्टेटस (128 + सिग्नल नंबर) होना चाहिए।
उदाहरण के लिए:
यदि कोई शेल कमांड SIGINT द्वारा समाप्त किया जाता है तो $? 130 देगा (128 + 2) (यहां 2 सिगंइट के लिए सिग्नल नंबर है, किल-एल का उपयोग करके जांचें)
निकास () को हमेशा पूर्णांक मान के साथ कहा जाना चाहिए और गैर-शून्य मान का उपयोग त्रुटि कोड के रूप में किया जाता है।
यह भी देखें: निकास का उपयोग () फ़ंक्शन
exit(0) कार्यक्रम का मतलब है (प्रक्रिया) सामान्य रूप से सफलतापूर्वक समाप्त ..
exit(1) कार्यक्रम का मतलब है (प्रक्रिया) सामान्य रूप से असफल ..
यदि आप इस चीज़ का निरीक्षण करना चाहते हैं, तो आपको यूनिक्स में सिग्नल हैंडलिंग और प्रक्रिया प्रबंधन का पता होना चाहिए ...
के बारे में पता है sigaction, watipid().. के लिए () ... ऐसे .... एपीआई ...........
exit function। C प्रोग्रामिंग लैंग्वेज में, एग्जिट फंक्शन एक्जिट में पंजीकृत सभी फंक्शन को कॉल करता है और प्रोग्राम को समाप्त कर देता है।
exit(1)मतलब प्रोग्राम (प्रक्रिया) असफलता को समाप्त करता है।
फ़ाइल बफ़र्स फ्लश किए जाते हैं, स्ट्रीम बंद हो जाती हैं, और अस्थायी फ़ाइलें हटा दी जाती हैं
exit(0) मतलब प्रोग्राम (प्रोसेस) सफलतापूर्वक समाप्त हो गया।
EXIT_FAILURE) इस प्रकार अपर्याप्त है।