हां, stderrगलत तर्कों का उपयोग करने पर संदेश प्रदर्शित करें । और अगर वह भी एप्लिकेशन को बाहर निकलने का कारण बनता है, तो गैर-शून्य निकास स्थिति के साथ बाहर निकलें।
आपको नैदानिक संदेशों के लिए या उपयोगकर्ता सहभागिता के लिए मानक त्रुटि स्ट्रीम का उपयोग करना चाहिए । डायग्नोस्टिक संदेशों में त्रुटि संदेश, चेतावनी और अन्य संदेश शामिल होते हैं जो उपयोगिता के आउटपुट का हिस्सा नहीं होते हैं जब यह सही ढंग से काम कर रहा हो ("सही ढंग से" का अर्थ है असाधारण कुछ भी नहीं हो रहा है, जैसे फाइलें नहीं मिल रही हैं, या जो कुछ भी हो सकता है)।
कई गोले (सभी?) प्रदर्शन का संकेत देते हैं, उपयोगकर्ता प्रकार और मेनू आदि क्या है stderrताकि पुनर्निर्देशन stdoutआपको सार्थक तरीके से शेल के साथ बातचीत करने से रोक नहीं पाएगा।
इस विषय पर एक ब्लॉग पोस्ट से निम्नलिखित है :
यह डौग मैकलरॉय का एक उद्धरण है, जो यूनिक्स पाइप के आविष्कारक है, जिसमें बताया गया है कि यह कैसे stderrहुआ। 'v6' 1975 में जारी किए गए मूल यूनिक्स ऑपरेटिंग सिस्टम के विशिष्ट संस्करण के एक संस्करण की बात कर रहा है।
सभी कार्यक्रमों ने मानक आउटपुट पर डायग्नोस्टिक्स को रखा। जब आउटपुट को but le में पुनर्निर्देशित किया गया था, तो यह हमेशा परेशानी का कारण बना था, लेकिन जब उत्पादन को एक असम्पीडित प्रक्रिया में भेजा गया था, तो यह असहनीय हो गया था। फिर भी, मानक-इनपुट-मानक-आउटपुट मॉडल की सादगी का उल्लंघन करने के लिए अनिच्छुक, लोगों ने v6 के माध्यम से इस स्थिति को सहन किया। कुछ ही समय बाद डेनिस रिची ने मानक त्रुटि। ले की शुरुआत करके गॉर्डियन गाँठ को काट दिया। यह काफी नहीं था। पाइपलाइनों के साथ निदान एक साथ चलने वाले कई कार्यक्रमों में से किसी से भी हो सकता है। खुद की पहचान के लिए डायग्नोस्टिक्स की जरूरत है।
- डौग मैकलरॉय, "ए रिसर्च यूनिक्स रीडर: प्रोग्रामर मैनुअल, 1971-1986 से एनोटेट अंश।"
"अपने आप को पहचानने" का अर्थ है "अरे! यह मेरी बात है! यह गलत हो गया: [...]"
$ ls nothere
ls: nothere: No such file or directory
ऐसा करना stderrबेहतर होता है, क्योंकि यह अन्यथा जो कुछ भी पढ़ रहा था, उसके द्वारा पढ़ा जा सकता है stdout(लेकिन हम lsवैसे भी ऐसा नहीं करते , हम करते हैं?)।