यूनिक्स इतिहास: रिटर्न कोड ऑक्टल?


10

मुझे आज गार्ड ऑफ थ्रो किया गया gdb:

Program exited with code 0146.

gdbऑक्टल में रिटर्न कोड प्रिंट करता है ; मुझे क्यों मिल रहा है: http://comments.gmane.org/gmane.comp.gdb.devel/30363

लेकिन यह एक विशेष रूप से संतोषजनक जवाब नहीं है। कुछ त्वरित googling ने इतिहास को प्रकट नहीं किया, इसलिए मैं उम्मीद कर रहा था कि SO पर कोई व्यक्ति पीछे की कहानी जान सकता है।

कुछ हद तक संबंधित प्रश्न, कोई भी ऑक्टल में रिटर्न कोड कैसे देख सकता है? शायद पुरानी मशीनों ने हमेशा रिटर्न कोड मुद्रित किया है?

$ printf %o\\n $?

बहुत अजीब है :)


$?वापसी कोड के लिए खोल के मूल्य है, और एक दशमलव अंकों (या gdb समर्थन अपने उदाहरण भी cmd करता है?)। पता नहीं क्यों gdb इसे ऑक्टल में रिपोर्ट करता है। मेरा समाधान यह man asciiदेखना है कि ऑल्ट का क्या अर्थ है। दिलचस्प सवाल, जैसा कि आप अन्य कार्यक्रमों से भी अष्टांगिक मूल्यों में चलते हैं। हो सकता है कि इसकी चर्चा किर्निघन और पाइक के 'यूनिक्स प्रोग्रामिंग एनवायरनमेंट' में की गई हो। सौभाग्य।
शेल्टर

बाहर निकलने की स्थिति एक अंक से बड़ी हो सकती है, यह वास्तव में एक बाइट है। इसके अलावा, man asciiऑक्टल को दशमलव में बदलने के लिए कोई फायदा नहीं होगा। bcएक बेहतर विकल्प होगा।
jlliagre

2
रिटर्न कोड एक संख्या है , दशमलव या अष्टक नहीं। कार्यक्रम एक स्थिति (एक बाइट) देता है। प्रतीक्षा (3) या इसके जनजाति के साथ मूल प्रक्रिया बहुत सारी जानकारी प्राप्त कर सकती है कि प्रक्रिया बाहर क्यों निकली (सामान्य रूप से, यानी, स्वेच्छा से बाहर निकलें (2), एक संकेत द्वारा मारे गए, ...)
वॉनब्रांड

जवाबों:


6

ऑक्टल प्रतिनिधित्व छोटे मूल्यों के लिए निकास कोड की व्याख्या को आसान बनाता है, जो सबसे अधिक उपयोग किया जाता है। क्या यह संख्या, जो एक बाइट है, को दशमलव में मुद्रित किया गया है, जो यह पता लगाता है कि किस प्रक्रिया में बाधा उत्पन्न हुई है, जबकि ऑक्टल में थोड़ी गणना की आवश्यकता होगी, उन्हें पढ़ा जा सकता है जैसे वे हैं:

  • स्थिति 5 के साथ एक प्रक्रिया से बाहर निकलता है, जो कोई अंतर नहीं gdbदिखाता है05
  • एक प्रक्रिया से बाहर निकलता है क्योंकि इसे एक SIGINT( Control+ C) मिला , gdbप्रदर्शित करता है 0202जो सिग्नल # 2 के रूप में पहचानना आसान है 130

इसके अलावा, बाहर निकलने की स्थिति भी थोड़ा मुखौटा हो सकती है और ऐसे मामले में, ऑक्टल (कम से कम जब आप इसका इस्तेमाल करते हैं जो इन दिनों की तुलना में कुछ दशक पहले आम था) दशमलव की तुलना में मानसिक रूप से बिट्स में परिवर्तित करना आसान है हेक्साडेसिमल, उदाहरण के लिए chmodअभी भी फ़ाइल अनुमतियों का प्रतिनिधित्व करने के लिए एक ऑक्टल नंबर स्वीकार करते हैं 0750 = 111 101 000 = rwx r-x ---:।


शायद यह पूछने के लिए गलत जगह है, लेकिन क्या यह बताने का एक आसान तरीका है कि क्या GDB द्वारा दिया गया एक नंबर ऑक्टल या दशमलव में है?
मारिनारा

3
यदि यह शून्य (0) से शुरू होता है तो यह सम्मेलन अष्टांगिक है।
jlliagre

3

मेरे पास इस पाठ की एक प्रति नहीं है और बस Google पुस्तकों पर उपलब्ध छोटे ब्लर्ब को पढ़ें लेकिन X / ओपन पोर्टेबिलिटी गाइड सिस्टम V स्पेसिफिकेशन कमांड और यूटिलिटीज के अनुसार pg 283 (गूगल की किताबों के अनुसार)

यदि कोई अनुप्रयोग असामान्य रूप से समाप्त हो जाता है, तो उसकी निकास स्थिति ओक्टल 0200 + स्थिति है, और सामान्य 'स्टेटस' मूल्यों की सूची है (जो संभवतः ऑक्टल में भी दी गई हैं)।

तो यह है / एक गरीब आदमी त्रुटि संदेश था।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.