मानक विधा (स्टैंडर्ड स्ट्रीम्स): Difference between revisions

From Vigyanwiki
No edit summary
 
(8 intermediate revisions by 4 users not shown)
Line 19: Line 19:
चूंकि यूनिक्स ने मानक विधाये प्रदान की हैं, इसलिए यूनिक्स [[सी (प्रोग्रामिंग भाषा)]] रनटाइम वातावरण भी इसका समर्थन करने के लिए बाध्य था। फलस्वरूप, अधिकांश सी रनटाइम वातावरण और सी संबंधित भाषाएं, ऑपरेटिंग सिस्टम की परवाह किए बिना, समकक्ष कार्यक्षमता प्रदान करते हैं।
चूंकि यूनिक्स ने मानक विधाये प्रदान की हैं, इसलिए यूनिक्स [[सी (प्रोग्रामिंग भाषा)]] रनटाइम वातावरण भी इसका समर्थन करने के लिए बाध्य था। फलस्वरूप, अधिकांश सी रनटाइम वातावरण और सी संबंधित भाषाएं, ऑपरेटिंग सिस्टम की परवाह किए बिना, समकक्ष कार्यक्षमता प्रदान करते हैं।


==मानक इनपुट (stdin)==
==मानक निविष्ट (stdin)==
मानक इनपुट एक स्ट्रीम है जिससे प्रोग्राम अपने इनपुट डेटा को पढ़ता है। प्रोग्राम read ऑपरेशन का उपयोग करके डेटा स्थानांतरण का अनुरोध करता है। सभी प्रोग्राम स्ट्रीम इनपुट की आवश्यकता नहीं होती है। उदाहरण के लिए, dir और ls प्रोग्राम जो एक निर्देशिका में संग्रहित फ़ाइलों के नाम प्रदर्शित करते हैं कमांड-लाइन तर्कों को ले सकते हैं, परंतु वे किसी भी विधा डेटा इनपुट के बिना अपने ऑपरेशन को निष्पादित करते हैं।
मानक इनपुट एक स्ट्रीम है जिससे प्रोग्राम अपने इनपुट डेटा को पढ़ता है। प्रोग्राम read ऑपरेशन का उपयोग करके डेटा स्थानांतरण का अनुरोध करता है। सभी प्रोग्राम स्ट्रीम इनपुट की आवश्यकता नहीं होती है। उदाहरण के लिए, dir और ls प्रोग्राम जो एक निर्देशिका में संग्रहित फ़ाइलों के नाम प्रदर्शित करते हैं कमांड-लाइन तर्कों को ले सकते हैं, परंतु वे किसी भी विधा डेटा इनपुट के बिना अपने ऑपरेशन को निष्पादित करते हैं।


Line 33: Line 33:
मानक आउटपुट के लिए फाइल डिस्क्रिप्टर 1 (एक) है; पॉज़िक्स <code><unistd.h></code> परिभाषा है <code>STDOUT_FILENO</code>; संबंधित सी <code><stdio.h></code> चर है <code>FILE* stdout</code>; इसी तरह, सी ++ <code><iostream></code> चर है <code>std::cout</code>.
मानक आउटपुट के लिए फाइल डिस्क्रिप्टर 1 (एक) है; पॉज़िक्स <code><unistd.h></code> परिभाषा है <code>STDOUT_FILENO</code>; संबंधित सी <code><stdio.h></code> चर है <code>FILE* stdout</code>; इसी तरह, सी ++ <code><iostream></code> चर है <code>std::cout</code>.


== मानक त्रुटि (stderr) ==<!-- This section is linked from [[COMMAND.COM]] -->
== मानक त्रुटि ==
मानक त्रुटि एक अन्य आउटपुट विधा है जो आमतौर पर प्रोग्राम द्वारा आउटपुट [[त्रुटि संदेश]] या डायग्नोस्टिक्स के लिए उपयोग की जाती है। यह मानक आउटपुट से स्वतंत्र एक विधा है और इसे अलग से पुनर्निर्देशित किया जा सकता है।
मानक त्रुटि एक अन्य आउटपुट विधा है, जो सामान्यतः प्रोग्रामों द्वारा त्रुटि संदेश या नॉटिस को आउटपुट करने के लिए उपयोग की जाती है। यह मानक आउटपुट के अलग विधा के रूप में कार्य करती है और इसे अलग से पुनर्निर्देशित किया जा सकता है।


यह अर्ध-विधेय समस्या को हल करता है। अर्ध-विधेय समस्या, आउटपुट और त्रुटियों को अलग करने की इजाजत देता है, और मूल्यों की एक जोड़ी लौटने वाले फ़ंक्शन के समान होता है - सेमीप्रिडिकेट समस्या # मल्टीवैल्यूड रिटर्न | अर्ध-विधेय समस्या देखें: बहु मूल्यवान वापसी। सामान्य गंतव्य पाठ टर्मिनल है जिसने मानक आउटपुट पुनर्निर्देशित होने पर भी देखे जाने का सबसे अच्छा मौका प्रदान करने के लिए कार्यक्रम शुरू किया (इसलिए आसानी से नहीं देखा गया)। उदाहरण के लिए, एक पाइपलाइन (यूनिक्स) में एक प्रोग्राम का आउटपुट अगले प्रोग्राम या एक टेक्स्ट फ़ाइल के इनपुट पर पुनर्निर्देशित किया जाता है, परंतु  प्रत्येक प्रोग्राम की त्रुटियां अभी भी सीधे टेक्स्ट टर्मिनल में जाती हैं ताकि वास्तविक समय में उपयोगकर्ता द्वारा उनकी समीक्षा की जा सके।<ref>{{cite web |title=What are stdin, stdout and stderr in Linux? {{!}} CodePre.com |url=https://codepre.com/en/was-sind-stdin-stdout-und-stderr-unter-linux.html |access-date=8 April 2022 |language=en |date=2 December 2021}}</ref>
यह सेमी-प्रेडिकेट समस्या को हल करता है, जिससे आउटपुट और त्रुटियों को पहचाना जा सकता है, और इसे एक फ़ंक्शन जोड़ती है जो एक पेयर (जोड़ी) के रूप में वापसी करती है - अर्ध-विधेय समस्या देखें: बहु-मूल्यवान रिटर्न देखें। सामान्यतः मानक त्रुटि का उद्देश्य प्रोग्राम को प्रारंभ करने वाले पाठ टर्मिनल में होता है, जिससे अग रमानक आउटपुट पुनर्निर्देशित किया जाए , तो सबसे अच्छा अवसर प्रदान किया जाता है कि उसे देखा जा सके। उदाहरण के रूप में, एक पाइपलाइन में प्रोग्राम का आउटपुट अगले प्रोग्राम के इनपुट पर या एक पाठ फ़ाइल पर पुनर्निर्देशित किया जाता है, लेकिन प्रत्येक प्रोग्राम की त्रुटियाँ फिर भी सीधे पाठ टर्मिनल पर जाती हैं, जिससे उन्हें उपयोगकर्ता द्वारा वास्तविक समय में समीक्षा की जा सके।  
मानक आउटपुट और मानक त्रुटि को एक ही गंतव्य पर निर्देशित करना स्वीकार्य और सामान्य है, जैसे टेक्स्ट टर्मिनल। संदेश उसी क्रम में दिखाई देते हैं जैसे प्रोग्राम उन्हें लिखता है, जब तक कि [[डेटा बफ़र]] शामिल न हो। उदाहरण के लिए, सामान्य स्थितियों में मानक त्रुटि धारा अप्रभावित होती है परंतु  मानक आउटपुट धारा रेखा-बफर होती है; इस मामले में, मानक त्रुटि के लिए लिखा गया पाठ बाद में टर्मिनल पर पहले दिखाई दे सकता है, यदि मानक आउटपुट विधा  बफर अभी तक भरा नहीं है।


मानक त्रुटि के लिए फाइल डिस्क्रिप्टर को POSIX द्वारा 2 (दो) के रूप में परिभाषित किया गया है; <unistd.h> हेडर फ़ाइल प्रतीक प्रदान करती है <code>STDERR_FILENO</code>;<ref>{{cite web |url=http://pubs.opengroup.org/onlinepubs/009695399/basedefs/unistd.h.html |work=The Open Group Base Specifications Issue 6&mdash;IEEE Std 1003.1, 2004 Edition |title=&lt;unistd.h> |publisher=The Open Group |year=2004 }}</ref> संबंधित सी <code><stdio.h></code> चर है <code>FILE* stderr</code>. सी ++ <code><iostream></code> मानक हेडर इस विधा से जुड़े दो चर प्रदान करता है: <code>std::cerr</code> और <code>std::clog</code>, पूर्व को अप्रभावित किया जा रहा है और बाद में उसी बफ़रिंग तंत्र का उपयोग किया जा रहा है जैसा कि अन्य सभी C++ विधा  में होता है।
मानक आउटपुट और मानक त्रुटि को एक ही गंतव्य पर निर्देशित करना, जैसे पाठ टर्मिनल, स्वीकार्य और सामान्य है। संदेश प्रोग्राम द्वारा लिखे जाने के आदेश में ही दिखाई देते हैं, जब तक कि बफरिंग का उपयोग न किया जाए। उदाहरण के लिए, सरल स्थितियों में मानक त्रुटि विधा अनबफर्ड होती है लेकिन मानक आउटपुट विधा लाइन-बफर्ड होती है; इस स्थिति में, यदि मानक आउटपुट विधा का बफर अभी भी रिक्त नहीं हुआ होता है, तो बाद में मानक त्रुटि पर लिखा गया पाठ पहले ही टर्मिनल पर दिख सकता है।
 
 
मानक त्रुटि के लिए पॉज़िक्स में फ़ाइल निरुपक को 2 (दो) के रूप में परिभाषित किया गया है ;<unistd.h> हेडर फ़ाइल मानक फिलेनो चिन्ह प्रदान करता है इससे संबंधित सी <code><stdio.h></code> चर मुद्रित कोष्ठक चर मानक है। सी++ <<code><iostream></code> मानक हेडर इस विधा के साथ दो चर प्रदान करता है: <code>std::cerr</code> और <code>std::clog</code>, पूर्व को अप्रभावित किया जा रहा है और बाद में उसी बफ़रिंग तंत्र का उपयोग किया जा रहा है जैसा कि अन्य सभी C++ विधा  में होता है।


[[बॉर्न शेल]]-शैली के गोले मानक त्रुटि को उसी गंतव्य पर पुनर्निर्देशित करने की अनुमति देते हैं जो मानक आउटपुट को उपयोग करने के लिए निर्देशित किया जाता है
[[बॉर्न शेल]]-शैली के गोले मानक त्रुटि को उसी गंतव्य पर पुनर्निर्देशित करने की अनुमति देते हैं जो मानक आउटपुट को उपयोग करने के लिए निर्देशित किया जाता है
  2>और 1
  2>&1


[[ सी खोल ]]-शैली के गोले मानक त्रुटि को उसी गंतव्य पर पुनर्निर्देशित करने की अनुमति देते हैं जो मानक आउटपुट का उपयोग करने के लिए निर्देशित किया जाता है
सीएश शैली के शेल मानक त्रुटि को मानक आउटपुट के निर्देशित गंतव्य पर पुनर्निर्देशित करने की अनुमति देते हैं।
   >&
   >&


1970 के दशक में यूनिक्स में मानक त्रुटि जोड़ी गई थी, जब उपयोगकर्ता के टर्मिनल पर प्रदर्शित होने के बजाय टाइपसेट होने वाले त्रुटि संदेशों के साथ कई व्यर्थ फोटोटाइपसेटिंग रन समाप्त हो गए।<ref>{{cite mailing list |url=https://minnie.tuhs.org/pipermail/tuhs/2013-December/006113.html |title=[TUHS] Graphic Systems C/A/T phototypesetter |work=The Unix Heritage Society |date=2013-12-11 |first=Steve |last=Johnson |author-link=Stephen C. Johnson |access-date=2020-11-07 |url-status=live |archive-url=https://web.archive.org/web/20200925010614/https://minnie.tuhs.org/pipermail/tuhs/2013-December/006113.html |archive-date=2020-09-25}}</ref>
1970 के दशक में कई बार फोटोटाइपसेटिंग रन्स के बाद स्टैंडर्ड एरर को यूनिक्स में जोड़ा गया, जिसमें त्रुटि संदेशों को टाइपसेट करने केअतिरिक्त उपयोगकर्ता के टर्मिनल पर प्रदर्शित किया जाना चाहिए।<ref>{{cite mailing list |url=https://minnie.tuhs.org/pipermail/tuhs/2013-December/006113.html |title=[TUHS] Graphic Systems C/A/T phototypesetter |work=The Unix Heritage Society |date=2013-12-11 |first=Steve |last=Johnson |author-link=Stephen C. Johnson |access-date=2020-11-07 |url-status=live |archive-url=https://web.archive.org/web/20200925010614/https://minnie.tuhs.org/pipermail/tuhs/2013-December/006113.html |archive-date=2020-09-25}}</ref>




Line 53: Line 55:


=== 1950 का दशक: [[फोरट्रान]] ===
=== 1950 का दशक: [[फोरट्रान]] ===
फोरट्रान के पास यूनिक्स फाइल डिस्क्रिप्टर के बराबर है: परंपरा के अनुसार, कई फोरट्रान कार्यान्वयन इकाई संख्या का उपयोग करते हैं <code>UNIT=5</CODE> for stdin, <CODE>UNIT=6</CODE> for stdout and <CODE>UNIT=0</CODE> for stderr. In Fortran-2003, the intrinsic <code>ISO_FORTRAN_ENV</code> मॉड्यूल नामित स्थिरांक शामिल करने के लिए मानकीकृत किया गया था <code>INPUT_UNIT</code>, <code>OUTPUT_UNIT</code>, और <code>ERROR_UNIT</code> यूनिट नंबरों को पोर्टेबल रूप से निर्दिष्ट करने के लिए।
फोरट्रान के पास यूनिक्स फाइल डिस्क्रिप्टर के बराबर है: परंपरा के अनुसार, कई फोरट्रान कार्यान्वयन इकाई संख्या का उपयोग करते हैं यूनिट<code>=5</CODE> for stdin, यूनिट <CODE>=6</CODE> for स्टडआउट और <CODE>UNIT=0</CODE> for stderr.   फोरट्रान-2003, आंतरिक <code>आईएसओ_फोरट्रान_ईएनवी</code> मॉड्यूल नामित स्थिरांक सम्मिलित करने के लिए मानकीकृत किया गया था इनपुट<code>_यूनिट</code> , <code>आउटपुट_यूनिट</code> , और त्रुटि <code>यूनिट</code> नंबरों को पोर्टेबल रूप से निर्दिष्ट करने के लिए।
<syntaxhighlight lang="fortran">
<syntaxhighlight lang="fortran">
! FORTRAN 77 example
! FORTRAN 77 example
Line 75: Line 77:


=== 1960: [[एल्गोल 60]] ===
=== 1960: [[एल्गोल 60]] ===
ALGOL 60 की कोई मानक फ़ाइल एक्सेस न होने के कारण आलोचना की गई थी।{{citation needed|date=February 2012}}
[[एल्गोल 60|एल्गोल]] 60 को मानक फ़ाइल पहुंच न होने के लिए आलोचना की गई थी।


=== 1968: [[एल्गोल 68]] ===
=== 1968: [[एल्गोल 68]] ===
ALGOL 68 की इनपुट और आउटपुट सुविधाओं को सामूहिक रूप से ट्रांसपुट कहा जाता था।<ref>Revised
[[एल्गोल 60|एल्गोल]] 68 की इनपुट और आउटपुट सुविधाओं को सामूहिक रूप से ट्रांसपुट कहा जाता था।<ref>Revised
Report on the Algorithmic Language Algol 68, Edited by
Report on the Algorithmic Language Algol 68, Edited by
A. van Wijngaarden,
A. van Wijngaarden,
Line 87: Line 89:
C.H. Lindsey,
C.H. Lindsey,
L.G.L.T. Meertens
L.G.L.T. Meertens
and R.G. Fisker, http://www.softwarepreservation.org/projects/ALGOL/report/Algol68_revised_report-AB.pdf, Section 10.3</ref> कॉर्नेलिस एच। ए। कोस्टर ने ट्रांसपुट मानक की परिभाषा का समन्वय किया। मॉडल में तीन मानक चैनल शामिल थे: <code>stand in</code>, <code>stand out</code>, और <code>stand back</code>.
and R.G. Fisker, http://www.softwarepreservation.org/projects/ALGOL/report/Algol68_revised_report-AB.pdf, Section 10.3</ref> कॉर्नेलिस एच। ए। कोस्टर ने ट्रांसपुट मानक की परिभाषा का समन्वय किया। प्रारूप में तीन मानक चैनल सम्मिलित थे: <code>stand in</code>, <code>stand out</code>, और <code>stand back</code>.


{|
{|
|+ '''Example'''
|+ '''उदाहरण'''
|colspan="2"|<syntaxhighlight lang="text">
|colspan="2"|<syntaxhighlight lang="text">
# ALGOL 68 example #
# ALGOL 68 example #
Line 101: Line 103:
)</syntaxhighlight>
)</syntaxhighlight>
|-
|-
!align="left"|Input:
!align="left"|इनपुट
!align="left"|Output:
!align="left"|आउटपुट
|-
|-
|<pre>3.14159</pre>
|<pre>3.14159</pre>
Line 110: Line 112:


=== 1970 का दशक: सी और यूनिक्स ===
=== 1970 का दशक: सी और यूनिक्स ===
[[सी प्रोग्रामिंग भाषा]] में, मानक इनपुट, आउटपुट और एरर विधा क्रमशः मौजूदा यूनिक्स फाइल डिस्क्रिप्टर 0, 1 और 2 से जुड़े होते हैं।<ref>{{Cite web|url=http://linux.die.net/man/3/stdin|title = Stdin(3): Standard I/O streams - Linux man page}}</ref> POSIX वातावरण में [[ जादू संख्या (प्रोग्रामिंग) ]] के बजाय <unistd.h> परिभाषाओं STDIN_FILENO, STDOUT_FILENO या STDERR_FILENO का उपयोग किया जाना चाहिए। फाइल पॉइंटर्स स्टडिन, स्टडआउट और स्टेडर भी प्रदान किए जाते हैं।
[[सी प्रोग्रामिंग भाषा]] में, मानक इनपुट, आउटपुट, और त्रुटि विधा को उपस्थित यूनिक्स फ़ाइल निरुपक 0, 1 और 2 के साथ जोड़ा जाता है। पॉज़िक्स पर्यावरण में, ''<unistd.h>'' परिभाषाएं स्टडीन फिलेनो, एसटीडीआउट फिलेनो या एसटीडी ईआरआर _फिलेनो का उपयोग किया जाता है।


[[केन थॉम्पसन]] (मूल यूनिक्स ऑपरेटिंग सिस्टम के डिजाइनर और कार्यान्वयनकर्ता) ने [[संस्करण 5 यूनिक्स]] में संशोधित [[सॉर्ट (यूनिक्स)]] को मानक इनपुट के रूप में स्वीकार किया, जो अन्य उपयोगिताओं में फैल गया और संस्करण 8 में एक [[विशेष फ़ाइल]] के रूप में ऑपरेटिंग सिस्टम का एक हिस्सा बन गया। यूनिक्स। डायग्नोस्टिक्स [[संस्करण 6 यूनिक्स]] के माध्यम से मानक आउटपुट का हिस्सा थे, जिसके बाद डेनिस एम. रिची ने मानक त्रुटि की अवधारणा बनाई।<ref name="reader">{{cite techreport |first1=M. D. |last1=McIlroy |author-link1=Doug McIlroy |year=1987 |url=http://www.cs.dartmouth.edu/~doug/reader.pdf |title=A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986 |series=CSTR |number=139 |institution=Bell Labs}}</ref>
[[केन थॉम्पसन]] ने [[संस्करण 5 यूनिक्स]] में संशोधित [[सॉर्ट (यूनिक्स)]] को मानक इनपुट के रूप में स्वीकार किया, जो अन्य उपयोगिताओं में फैल गया और संस्करण 8 में एक [[विशेष फ़ाइल]] के रूप में ऑपरेटिंग सिस्टम का एक भाग  बन गया। यूनिक्स निदानिकी [[संस्करण 6 यूनिक्स]] के माध्यम से मानक आउटपुट के भाग थे, जिसके बाद डेनिस एम. रिची ने मानक त्रुटि की अवधारणा बनाई।<ref name="reader">{{cite techreport |first1=M. D. |last1=McIlroy |author-link1=Doug McIlroy |year=1987 |url=http://www.cs.dartmouth.edu/~doug/reader.pdf |title=A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986 |series=CSTR |number=139 |institution=Bell Labs}}</ref>




=== 1995: जावा ===
=== 1995: जावा ===
[[ जावा (प्रोग्रामिंग भाषा) ]] में, मानक धाराओं को किसके द्वारा संदर्भित किया जाता है {{Javadoc:SE|java/lang|System|in}} (stdin के लिए), {{Javadoc:SE|java/lang|System|out}} (स्टडआउट के लिए), और  {{Javadoc:SE|java/lang|System|err}} (stderr के लिए)।<ref>{{cite web|title=System (Java Platform SE 7)|url=http://docs.oracle.com/javase/7/docs/api/java/lang/System.html|access-date=20 July 2012}}</ref>
[[ जावा (प्रोग्रामिंग भाषा) ]] में, मानक धाराओं को किसके द्वारा संदर्भित किया जाता है {{Javadoc:SE|java/lang|System|in}} के लिए {{Javadoc:SE|java/lang|System|out}} (स्टडआउट के लिए), और  {{Javadoc:SE|java/lang|System|err}}के द्वारा संदर्भित किया जाता है।
<syntaxhighlight lang="java">
public static void main(String args[]) {
    try {
        BufferedReader br =
          new BufferedReader(new InputStreamReader(System.in));
        String s = br.readLine();
        double number = Double.parseDouble(s);
        System.out.println("Number is:" + number);
    } catch (Exception e) {
        System.err.println("Error:" + e.getMessage());
    }
}
</syntaxhighlight>
 
 
=== 2000 का दशक: .NET ===
C Sharp (प्रोग्रामिंग लैंग्वेज)|C# और अन्य .NET Framework|.NET भाषाओं में, मानक विधा  किसके द्वारा संदर्भित की जाती हैं <code>System.Console.In</code> (स्टडीन के लिए), <code>System.Console.Out</code> (स्टडआउट के लिए) और <code>System.Console.Error</code> (stderr के लिए)।<ref>{{Cite web|url=https://referencesource.microsoft.com/#mscorlib/system/console.cs,34|title=C# Reference Source, .NET Framework 4.7.1, mscorlib, Console class|website=referencesource.microsoft.com|access-date=2017-12-10}}</ref> स्टडिन और स्टडआउट विधा  के लिए बुनियादी पढ़ने और लिखने की क्षमता भी सीधे कक्षा के माध्यम से उपलब्ध है <code>System.Console</code> (उदा <code>System.Console.WriteLine()</code> की जगह इस्तेमाल किया जा सकता है <code>System.Console.Out.WriteLine()</code>).
 
<code>System.Console.In</code>, <code>System.Console.Out</code> और <code>System.Console.Error</code> हैं <code>System.IO.TextReader</code> (stdin) और <code>System.IO.TextWriter</code> (stdout, stderr) ऑब्जेक्ट्स, जो केवल टेक्स्ट के आधार पर अंतर्निहित मानक धाराओं तक पहुंच की अनुमति देते हैं। मानक धाराओं के लिए पूर्ण बाइनरी एक्सेस के माध्यम से किया जाना चाहिए <code>System.IO.Stream</code> द्वारा लौटाई गई वस्तुएँ <code>System.Console.OpenStandardInput()</code>, <code>System.Console.OpenStandardOutput()</code> और <code>System.Console.OpenStandardError()</code> क्रमश।
<वाक्यविन्यास प्रकाश लैंग = सी #>
// सी # उदाहरण
सार्वजनिक स्थैतिक पूर्णांक मुख्य (स्ट्रिंग [] तर्क)
{
    कोशिश {
        स्ट्रिंग एस = System.Console.In.ReadLine ();
        डबल नंबर = डबल। पार्स (ओं);
        System.Console.Out.WriteLine(संख्या है: {0:F3} , संख्या);
        वापसी 0;


    // अगर पार्स () ने एक अपवाद फेंक दिया
    try {
    } कैच (ArgumentNullException) {
        BufferedReader br =
        System.Console.Error.WriteLine (कोई नंबर दर्ज नहीं किया गया था!);
          new BufferedReader(new InputStreamReader(System.in));
    } कैच (प्रारूप अपवाद) {
        String s = br.readLine();
        System.Console.Error.WriteLine (निर्दिष्ट मान मान्य संख्या नहीं है!);
        double number = Double.parseDouble(s);
    } कैच (ओवरफ्लो अपवाद) {
        System.out.println("Number is:" + number);
        System.Console.Error.WriteLine (निर्दिष्ट संख्या बहुत बड़ी है!);
    } catch (Exception e) {
    }
        System.err.println("Error:" + e.getMessage());


    वापसी -1;
== 2000 का दशक: .NET ==
}
C# और अन्य .NET भाषाओं में, मानक स्ट्रीम्स को सिस्टम.कंसोल.इन के लिए सिस्टम.कंसोल.आउट के लिए और सिस्टम.कंसोल..त्रुटि के द्वारा संदर्भित किया जाता है। स्टडीन और  एसटीडीआउट विधा के लिए मूल रीड और राइट क्षमताएं सीधे सिस्टम.कंसोल कक्षा के माध्यम से भी पहुंचनी योग्य होती हैं (उदाहरण के लिए,सिस्टम.कंसोल आउट.राइट लाइन () के अतिरिक्त सिस्टम.कंसोल आउट.राइट लाइन () का उपयोग किया जा सकता है)।
</वाक्यविन्यास हाइलाइट>


        // C# example


सिंटैक्सहाइलाइट लैंग = वीबीनेट>
public static int Main(string[] args)
' विजुअल बेसिक .NET उदाहरण
{
    try {
        string s = System.Console.In.ReadLine();
        double number = double.Parse(s);
        System.Console.Out.WriteLine("Number is: {0:F3}", number);
        return 0;
    // If Parse() threw an exception
    } catch (ArgumentNullException) {
        System.Console.Error.WriteLine("No number was entered!");
    } catch (FormatException) {
        System.Console.Error.WriteLine("The specified value is not a valid number!");
    } catch (OverflowException) {
        System.Console.Error.WriteLine("The specified number is too big!");
    }
    return -1;
}


सार्वजनिक समारोह मुख्य () पूर्णांक के रूप में
  ' Visual Basic .NET example
    कोशिश
        Dim s as String = System.Console.[In].ReadLine()
        डबल के रूप में मंद संख्या = डबल। पार्स (एस)
        System.Console.Out.WriteLine( संख्या है: {0:F3} , संख्या)
        वापसी 0


    ' अगर पार्स() ने अपवाद फेंक दिया
Public Function Main() As Integer
    Ex को System.ArgumentNullException के रूप में पकड़ें
    Try
        System.Console। [त्रुटि]। राइटलाइन (कोई संख्या दर्ज नहीं की गई थी!)
        Dim s As String = System.Console.[In].ReadLine()
    Ex2 को System.FormatException के रूप में पकड़ें
        Dim number As Double = Double.Parse(s)
        System.Console। [त्रुटि]। राइटलाइन (निर्दिष्ट मान मान्य संख्या नहीं है!)
        System.Console.Out.WriteLine("Number is: {0:F3}", number)
    Ex3 को System.OverflowException के रूप में पकड़ें
        Return 0
        System.Console। [त्रुटि]। राइटलाइन (निर्दिष्ट संख्या बहुत बड़ी है!)
    प्रयास समाप्त करें
    ' If Parse() threw an exception
    Catch ex As System.ArgumentNullException
        System.Console.[Error].WriteLine("No number was entered!")
    Catch ex2 As System.FormatException
        System.Console.[Error].WriteLine("The specified value is not a valid number!")
    Catch ex3 As System.OverflowException
        System.Console.[Error].WriteLine("The specified number is too big!")
    End Try
    Return -1


     वापसी -1
End Function
अंत समारोह
      
</वाक्यविन्यास हाइलाइट>
सिस्टम.डायग्नोस्टिक्स.प्रोसेस कक्षा का उपयोग करते समय, उस कक्षा के उदाहरण गुण StandardInput, StandardOutput और StandardError का उपयोग प्रक्रिया के मानक स्ट्रीम्स तक पहुंचने के लिए किया जा सकता है।


आवेदन करते समय <code>System.Diagnostics.Process</code> [[कक्षा (कंप्यूटर विज्ञान)]] उदाहरण [[संपत्ति (प्रोग्रामिंग)]] का उपयोग कर सकते हैं <code>StandardInput</code>, <code>StandardOutput</code>, और <code>StandardError</code> प्रक्रिया की मानक धाराओं तक पहुँचने के लिए उस वर्ग का।
===2000 -: पायथन (2 या 3) ===
निम्नलिखित उदाहरण में दिखाया गया है कि कैसे मानक इनपुट को साथ ही मानक आउटपुट और एक पाठ फ़ाइल में पुनर्निर्देशित किया जाता है


===2000 - : पायथन (2 या 3) ===
  #!/usr/bin/env python
निम्न उदाहरण दिखाता है कि मानक इनपुट दोनों को मानक आउटपुट पर पुनर्निर्देशित कैसे किया जाए
और एक पाठ फ़ाइल के लिए।


<वाक्यविन्यास लैंग = पायथन लाइन = 1>
1 import sys
#!/usr/bin/env python
2 # Save the current stdout so that we can revert sys.stdout
आयात प्रणाली
3 # after we complete our redirection
# मौजूदा स्टडआउट को सेव करें ताकि हम sys.stdout को वापस ला सकें
4 stdin_fileno = sys.stdin
# हमारे द्वारा अपना पुनर्निर्देशन पूरा करने के बाद
5 stdout_fileno = sys.stdout
stdin_fileno = sys.stdin
6 # Redirect sys.stdout to the file
stdout_fileno = sys.stdout
7 sys.stdout = open('myfile.txt', 'w') 8ctr = 0
# फ़ाइल के लिए sys.stdout को पुनर्निर्देशित करें
9 for inps in stdin_fileno:
sys.stdout = open('myfile.txt', 'w')
10 ctrs = str(ctr)
सीटीआर = 0
11 # Prints to the redirected stdout ()
stdin_fileno में आईपीएस के लिए:
12  sys.stdout.write(ctrs + ") this is to the redirected --->" + inps + '\n')
    सीटीआर = एसटीआर (सीटीआर)
13  # Prints to the actual saved stdout handler
    # पुनर्निर्देशित स्टडआउट पर प्रिंट करता है ()
14  stdout_fileno.write(ctrs + ") this is to the actual  --->" + inps + '\n')
    sys.stdout.write(ctrs + ) यह पुन: निर्देशित करने के लिए है ---> + inps + '\n')
15  ctr = ctr + 1
    # वास्तविक सहेजे गए स्टडआउट हैंडलर को प्रिंट करता है
16  # Close the file
    stdout_fileno.write(ctrs + ) यह वास्तविक है ---> + inps + '\n')
17  sys.stdout.close()
    सीटीआर = सीटीआर + 1
18  # Restore sys.stdout to our old saved file handler
# फ़ाइल बंद करें
19 sys.stdout = stdout_fileno
sys.stdout.close ()
# हमारे पुराने सहेजे गए फ़ाइल हैंडलर में sys.stdout को पुनर्स्थापित करें
sys.stdout = stdout_fileno
</वाक्यविन्यास हाइलाइट>


=== जीयूआई ===
=== जीयूआई ===
[[ ग्राफिकल यूज़र इंटरफ़ेस ]] (जीयूआई) हमेशा मानक धाराओं का उपयोग नहीं करते हैं; वे तब करते हैं जब जीयूआई अंतर्निहित स्क्रिप्ट और/या कंसोल प्रोग्राम के रैपर होते हैं, उदाहरण के लिए सिनैप्टिक (सॉफ़्टवेयर) पैकेज मैनेजर जीयूआई, जो डेबियन और/या उबंटू में उपयुक्त कमांड को लपेटता है। [[ कहाँ ]] प्रोजेक्ट द्वारा ज़ेनिटी और केडायलॉग जैसे स्क्रिप्टिंग टूल के साथ जीयूआई बनाए गए हैं<ref>{{cite web |url=https://www.linux-magazine.com/Issues/2009/99/Zenity-and-KDialog |first=Kristian |last=Kißling |title=Zenity और KDialog के साथ अपनी स्क्रिप्ट में ग्राफ़िक तत्व जोड़ना|website=[[Linux Magazine]] |date=2009 |access-date=2021-04-11}}</ref> स्टडिन, स्टडआउट और स्टेडर का उपयोग करें, और [[क्यूटी (सॉफ्टवेयर)]], [[जीटीके]], या अन्य समकक्ष मालिकाना विजेट ढांचे का उपयोग करके सी/सी ++ में प्रोग्राम किए गए और संकलित पूर्ण जीयूआई के बजाय सरल स्क्रिप्ट पर आधारित हैं।
[[ ग्राफिकल यूज़र इंटरफ़ेस |ग्राफिकल यूज़र इंटरफ़ेस]] (जीयूआई) हमेशा मानक स्ट्रीम्स का उपयोग नहीं करते हैं; जब जीयूआई मूल स्क्रिप्ट और/या कंसोल प्रोग्राम के अलग-अलग पैकेज को लपेटते हैं, उन समयों में करते हैं, जैसे कि डेबियन और/या उबंटू में अपार्ट आदेशों को लपेटता है सिनैप्टिक पैकेज मैनेजर जीयूआई। ज़ेनिटी और केडीई परियोजना द्वारा बनाए गए के-संवाद जैसे स्क्रिप्टिंग टूल के साथ बनाए गए जीयूआई में स्टडीन, स्टडआउट और स्टडर का उपयोग किया जाता है, और ये साधारित स्क्रिप्ट पर आधारित होते हैं जबकि C/C++ या अन्य समकक्ष एक पूरी जीयूआई कोड करके कंपाइल किया जाता है जिसमें  [[क्यूटी (सॉफ्टवेयर)]], [[जीटीके]] या अन्य प्राधिकरणीय विजेट फ्रेमवर्क का उपयोग होता है।


[[सेवा मेनू]], जैसा कि [[NeXTSTEP]] और [[Mac OS X]] पर लागू किया गया है, मानक विधा के अनुरूप भी है। इन ऑपरेटिंग सिस्टम पर, ग्राफ़िकल आवेदन एक सिस्टम-वाइड मेनू के माध्यम से कार्यक्षमता प्रदान कर सकते हैं जो GUI में वर्तमान विक्ट: चयन पर संचालित होता है, चाहे वह किसी भी आवेदन में हो।
नेक्स्टस्टेप और मैक ओएस एक्स  पर लागू किए जाने वाले सेवाएं मानक विधा के समकक्ष भी हैं। इन ऑपरेटिंग सिस्टम पर, ग्राफिकल एप्लिकेशन सिस्टम-व्यापी मेनू के माध्यम से कार्यक्षमता प्रदान कर सकते हैं जो जीयूआई में वर्तमान चयनपर कार्य करता है


कुछ जीयूआई प्रोग्राम, मुख्य रूप से यूनिक्स पर, अभी भी मानक त्रुटि के लिए डिबग जानकारी लिखते हैं। अन्य (जैसे कई यूनिक्स मीडिया प्लेयर) मानक इनपुट से फ़ाइलें पढ़ सकते हैं। लोकप्रिय विंडोज प्रोग्राम जो अपने जीयूआई विंडो के अलावा एक अलग कंसोल विंडो खोलते हैं, एमुलेटर पीएसएक्स (एमुलेटर) और [[ से DOSBox ]] हैं।
कुछ जीयूआई प्रोग्राम, मुख्य रूप से यूनिक्स पर, अभी भी मानक त्रुटि के लिए डिबग जानकारी लिखते हैं। अन्य मानक इनपुट से फ़ाइलें पढ़ सकते हैं। लोकप्रिय विंडोज प्रोग्राम जो अपने जीयूआई विंडो के अतिरिक्त एक अलग कंसोल विंडो खोलते हैं, एमुलेटर पीएसएक्स और [[ से DOSBox |डॉसबॉक्स]] हैं।


[[जीटीके-सर्वर]] एक जीयूआई को साकार करने के लिए व्याख्या किए गए प्रोग्राम के साथ एक संचार इंटरफेस के रूप में स्टडिन का उपयोग कर सकता है।
[[जीटीके-सर्वर]] एक जीयूआई को साकार करने के लिए व्याख्या किए गए प्रोग्राम के साथ एक संचार इंटरफेस के रूप में स्टडिन का उपयोग कर सकता है।
Line 252: Line 243:
* [http://www.linfo.org/standard_error.html Standard Error Definition] - by The Linux Information Project
* [http://www.linfo.org/standard_error.html Standard Error Definition] - by The Linux Information Project


{{DEFAULTSORT:Standard Streams}}[[Category: यूनिक्स]]
{{DEFAULTSORT:Standard Streams}}
 
 


[[Category: Machine Translated Page]]
[[Category:Articles with hatnote templates targeting a nonexistent page|Standard Streams]]
[[Category:Created On 14/06/2023]]
[[Category:Created On 14/06/2023|Standard Streams]]
[[Category:Lua-based templates|Standard Streams]]
[[Category:Machine Translated Page|Standard Streams]]
[[Category:Pages with script errors|Standard Streams]]
[[Category:Templates Vigyan Ready|Standard Streams]]
[[Category:Templates that add a tracking category|Standard Streams]]
[[Category:Templates that generate short descriptions|Standard Streams]]
[[Category:Templates using TemplateData|Standard Streams]]
[[Category:यूनिक्स|Standard Streams]]

Latest revision as of 11:53, 2 July 2023


कंप्यूटर प्रोग्रामिंग में,मानक विधा कंप्यूटर प्रोग्राम के प्रारंभिक निष्पादन परियोजना और उसके आसपास के पर्यावरण के बीच एक-दूसरे से जुड़े हुए इनपुट और आउटपुट संचार चैनल होते हैं।तीन इनपुट/आउटपुट (I/O) संयोजन को मानक इनपुट,मानक आउटपुट और मानक त्रुटि कहा जाता हैं। प्रारंभ में, इनपुट/आउटपुट (I/O) शारीरिक रूप से जुड़े हुए सिस्टम कंसोल के माध्यम से होता था परंतु मानक विधा इसे अबस्ट्रैक्ट करते हैं। जब किसी कमांड को परस्पर संवादात्मक शैल के माध्यम से निष्पादित किया जाता है, तो विधा सामान्यतः वह टेक्स्ट टर्मिनल से जुड़े होते हैं जिस पर शैल चल रहा होता है, परंतु इन्हें पुनर्क्रिया या पाइपलाइन के माध्यम से बदला जा सकता है। सामान्यतः, एक चाइल्ड प्रोसेस अपने पैरेंट प्रोसेस के मानक विधा को अनुग्रहित करता है।

आवेदन

इनपुट, आउटपुट और त्रुटि के लिए मानक विधा

उपयोगकर्ताओं को सामान्यतः मानक विधा के रूप में इनपुट और आउटपुट चैनलों के रूप में जाना जाता है जो एक इनपुट उपकरण से आने वाले डेटा का प्रयोग करते हैं, या जो डेटा को आवेदन से लिखते हैं। इस डेटा में किसी भी कोडिंग के साथ पाठ हो सकता है, या बाइनरी डेटा हो सकता है। आधुनिक बहुत सारे सिस्टमों में, एक प्रोग्राम का मानक त्रुटि विधा सामान्यतः त्रुटि विश्लेषण के उद्देश्यों के लिए एक लॉग फ़ाइल में पुन: निर्देशित किया जाता है।

विधाओ का उपयोग आवेदनों को चेन करने के लिए किया जा सकता है, इसका अर्थ है कि एक प्रोग्राम की आउटपुट विधाओ को एक अन्य आवेदन के इनपुट विधाओ के रूप में पुन: निर्देशित किया जा सकता है। बहुत से ऑपरेटिंग सिस्टमों में इसे आवेदन के नामों की सूची के द्वारा व्यक्त किया जाता है, जिन्हें वर्टिकल बार वर्ण द्वारा अलग किया जाता है, इसलिए इसे प्रायः पाइपलाइन चरित्र के रूप में कहा जाता है। एक प्रसिद्ध उदाहरण है पृष्ठांकन आवेदन का उपयोग, जैसे अधिक उपयोगकर्ता को आउटपुट विधा के डिस्प्ले पर प्रदर्शन के नियंत्रण प्रदान करता है।

पृष्ठभूमि

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

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

दूसरी यूनिक्स की प्रमुख उपलब्धि यह थी कि इनपुट और आउटपुट डिफ़ॉल्ट रूप से टर्मिनल कुंजीपटल और टर्मिनल प्रदर्शन के साथ संबंधित किए जाते थे, प्रोग्राम एक सामान्य इनपुट-प्रोसेस-आउटपुट प्रोग्राम के लिए इनपुट और आउटपुट स्थापित करने के लिए कुछ भी नहीं करता था। इसके विपरीत, पिछले ऑपरेटिंग सिस्टम सामान्यतः संयोजन स्थापित करने के लिए कुछ कठिन - जॉब कंट्रोल भाषा की आवश्यकता थी, या समकक्ष बोझ को प्रोग्राम द्वारा संगठित किया जाना पड़ता था।।

चूंकि यूनिक्स ने मानक विधाये प्रदान की हैं, इसलिए यूनिक्स सी (प्रोग्रामिंग भाषा) रनटाइम वातावरण भी इसका समर्थन करने के लिए बाध्य था। फलस्वरूप, अधिकांश सी रनटाइम वातावरण और सी संबंधित भाषाएं, ऑपरेटिंग सिस्टम की परवाह किए बिना, समकक्ष कार्यक्षमता प्रदान करते हैं।

मानक निविष्ट (stdin)

मानक इनपुट एक स्ट्रीम है जिससे प्रोग्राम अपने इनपुट डेटा को पढ़ता है। प्रोग्राम read ऑपरेशन का उपयोग करके डेटा स्थानांतरण का अनुरोध करता है। सभी प्रोग्राम स्ट्रीम इनपुट की आवश्यकता नहीं होती है। उदाहरण के लिए, dir और ls प्रोग्राम जो एक निर्देशिका में संग्रहित फ़ाइलों के नाम प्रदर्शित करते हैं कमांड-लाइन तर्कों को ले सकते हैं, परंतु वे किसी भी विधा डेटा इनपुट के बिना अपने ऑपरेशन को निष्पादित करते हैं।

यदि पुनर्निर्देशित नहीं किया गया हो, तो मानक इनपुट मूल प्रक्रिया से विरासत में ली जाती है। एक पुनर्निर्देशित शेल के मामले में, यह सामान्यतः कुंजीपटल से संबद्ध होता है।

std::cin.स्टैंडर्ड इनपुट के लिए फाइल डिस्क्रिप्टर 0 (शून्य) होता है;पॉज़िक्स <unistd.h> परिभाषा में इसका नाम STDIN_FILENO होता है; संबंधित C <stdio.h> चर stdin होता है; उसी तरह, C++ <iostream> चर std::cin होता है।

मानक आउटपुट (स्टडआउट)

मानक आउटपुट एक विधा है जिसमें एक प्रोग्राम अपना आउटपुट डेटा लिखता है। प्रोग्राम राइट ऑपरेशन के साथ डेटा ट्रांसफर का अनुरोध करता है। सभी प्रोग्राम आउटपुट उत्पन्न नहीं करते हैं। उदाहरण के लिए, नाम बदलें (कंप्यूटिंग) कमांड (विभिन्न प्रकार से एमवी (यूनिक्स), चाल (आदेश) , या रेन (कमांड) कहा जाता है) सफलता पर मौन है।

जब तक पुनर्निर्देशन (यूनिक्स) न हो, मानक आउटपुट मूल प्रक्रिया से प्राप्त होता है। इंटरएक्टिव शेल के मामले में, वह आमतौर पर टेक्स्ट टर्मिनल होता है जिसने प्रोग्राम को शुरू किया।

मानक आउटपुट के लिए फाइल डिस्क्रिप्टर 1 (एक) है; पॉज़िक्स <unistd.h> परिभाषा है STDOUT_FILENO; संबंधित सी <stdio.h> चर है FILE* stdout; इसी तरह, सी ++ <iostream> चर है std::cout.

मानक त्रुटि

मानक त्रुटि एक अन्य आउटपुट विधा है, जो सामान्यतः प्रोग्रामों द्वारा त्रुटि संदेश या नॉटिस को आउटपुट करने के लिए उपयोग की जाती है। यह मानक आउटपुट के अलग विधा के रूप में कार्य करती है और इसे अलग से पुनर्निर्देशित किया जा सकता है।

यह सेमी-प्रेडिकेट समस्या को हल करता है, जिससे आउटपुट और त्रुटियों को पहचाना जा सकता है, और इसे एक फ़ंक्शन जोड़ती है जो एक पेयर (जोड़ी) के रूप में वापसी करती है - अर्ध-विधेय समस्या देखें: बहु-मूल्यवान रिटर्न देखें। सामान्यतः मानक त्रुटि का उद्देश्य प्रोग्राम को प्रारंभ करने वाले पाठ टर्मिनल में होता है, जिससे अग रमानक आउटपुट पुनर्निर्देशित किया जाए , तो सबसे अच्छा अवसर प्रदान किया जाता है कि उसे देखा जा सके। उदाहरण के रूप में, एक पाइपलाइन में प्रोग्राम का आउटपुट अगले प्रोग्राम के इनपुट पर या एक पाठ फ़ाइल पर पुनर्निर्देशित किया जाता है, लेकिन प्रत्येक प्रोग्राम की त्रुटियाँ फिर भी सीधे पाठ टर्मिनल पर जाती हैं, जिससे उन्हें उपयोगकर्ता द्वारा वास्तविक समय में समीक्षा की जा सके।

मानक आउटपुट और मानक त्रुटि को एक ही गंतव्य पर निर्देशित करना, जैसे पाठ टर्मिनल, स्वीकार्य और सामान्य है। संदेश प्रोग्राम द्वारा लिखे जाने के आदेश में ही दिखाई देते हैं, जब तक कि बफरिंग का उपयोग न किया जाए। उदाहरण के लिए, सरल स्थितियों में मानक त्रुटि विधा अनबफर्ड होती है लेकिन मानक आउटपुट विधा लाइन-बफर्ड होती है; इस स्थिति में, यदि मानक आउटपुट विधा का बफर अभी भी रिक्त नहीं हुआ होता है, तो बाद में मानक त्रुटि पर लिखा गया पाठ पहले ही टर्मिनल पर दिख सकता है।


मानक त्रुटि के लिए पॉज़िक्स में फ़ाइल निरुपक को 2 (दो) के रूप में परिभाषित किया गया है ;<unistd.h> हेडर फ़ाइल मानक फिलेनो चिन्ह प्रदान करता है इससे संबंधित सी <stdio.h> चर मुद्रित कोष्ठक चर मानक है। सी++ <<iostream> मानक हेडर इस विधा के साथ दो चर प्रदान करता है: std::cerr और std::clog, पूर्व को अप्रभावित किया जा रहा है और बाद में उसी बफ़रिंग तंत्र का उपयोग किया जा रहा है जैसा कि अन्य सभी C++ विधा में होता है।

बॉर्न शेल-शैली के गोले मानक त्रुटि को उसी गंतव्य पर पुनर्निर्देशित करने की अनुमति देते हैं जो मानक आउटपुट को उपयोग करने के लिए निर्देशित किया जाता है

  2>&1

सीएश शैली के शेल मानक त्रुटि को मानक आउटपुट के निर्देशित गंतव्य पर पुनर्निर्देशित करने की अनुमति देते हैं।

 >&

1970 के दशक में कई बार फोटोटाइपसेटिंग रन्स के बाद स्टैंडर्ड एरर को यूनिक्स में जोड़ा गया, जिसमें त्रुटि संदेशों को टाइपसेट करने केअतिरिक्त उपयोगकर्ता के टर्मिनल पर प्रदर्शित किया जाना चाहिए।[1]


समयरेखा

1950 का दशक: फोरट्रान

फोरट्रान के पास यूनिक्स फाइल डिस्क्रिप्टर के बराबर है: परंपरा के अनुसार, कई फोरट्रान कार्यान्वयन इकाई संख्या का उपयोग करते हैं यूनिट=5 for stdin, यूनिट =6 for स्टडआउट और UNIT=0 for stderr. फोरट्रान-2003, आंतरिक आईएसओ_फोरट्रान_ईएनवी मॉड्यूल नामित स्थिरांक सम्मिलित करने के लिए मानकीकृत किया गया था इनपुट_यूनिट , आउटपुट_यूनिट , और त्रुटि यूनिट नंबरों को पोर्टेबल रूप से निर्दिष्ट करने के लिए।

! FORTRAN 77 example
      PROGRAM MAIN
        INTEGER NUMBER
        READ(UNIT=5,*) NUMBER
        WRITE(UNIT=6,'(A,I3)') ' NUMBER IS: ',NUMBER
      END
! Fortran 2003 example
program main
  use iso_fortran_env
  implicit none
  integer :: number
  read (unit=INPUT_UNIT,*) number
  write (unit=OUTPUT_UNIT,'(a,i3)') 'Number is: ', number
end program


1960: एल्गोल 60

एल्गोल 60 को मानक फ़ाइल पहुंच न होने के लिए आलोचना की गई थी।

1968: एल्गोल 68

एल्गोल 68 की इनपुट और आउटपुट सुविधाओं को सामूहिक रूप से ट्रांसपुट कहा जाता था।[2] कॉर्नेलिस एच। ए। कोस्टर ने ट्रांसपुट मानक की परिभाषा का समन्वय किया। प्रारूप में तीन मानक चैनल सम्मिलित थे: stand in, stand out, और stand back.

उदाहरण
# ALGOL 68 example #
main:(
  REAL number;
  getf(stand in,($g$,number));
  printf(($"Number is: "g(6,4)"OR "$,number)); # OR #
  putf(stand out,($" Number is: "g(6,4)"!"$,number));
  newline(stand out)
)
इनपुट आउटपुट
3.14159
Number is: +3.142 OR Number is: +3.142!


1970 का दशक: सी और यूनिक्स

सी प्रोग्रामिंग भाषा में, मानक इनपुट, आउटपुट, और त्रुटि विधा को उपस्थित यूनिक्स फ़ाइल निरुपक 0, 1 और 2 के साथ जोड़ा जाता है। पॉज़िक्स पर्यावरण में, <unistd.h> परिभाषाएं स्टडीन फिलेनो, एसटीडीआउट फिलेनो या एसटीडी ईआरआर _फिलेनो का उपयोग किया जाता है।

केन थॉम्पसन ने संस्करण 5 यूनिक्स में संशोधित सॉर्ट (यूनिक्स) को मानक इनपुट के रूप में स्वीकार किया, जो अन्य उपयोगिताओं में फैल गया और संस्करण 8 में एक विशेष फ़ाइल के रूप में ऑपरेटिंग सिस्टम का एक भाग बन गया। यूनिक्स निदानिकी संस्करण 6 यूनिक्स के माध्यम से मानक आउटपुट के भाग थे, जिसके बाद डेनिस एम. रिची ने मानक त्रुटि की अवधारणा बनाई।[3]


1995: जावा

जावा (प्रोग्रामिंग भाषा) में, मानक धाराओं को किसके द्वारा संदर्भित किया जाता है System.in के लिए System.out (स्टडआउट के लिए), और System.errके द्वारा संदर्भित किया जाता है।

    try {
        BufferedReader br = 
          new BufferedReader(new InputStreamReader(System.in));
        String s = br.readLine();
        double number = Double.parseDouble(s);
        System.out.println("Number is:" + number);
    } catch (Exception e) {
        System.err.println("Error:" + e.getMessage());

2000 का दशक: .NET

C# और अन्य .NET भाषाओं में, मानक स्ट्रीम्स को सिस्टम.कंसोल.इन के लिए सिस्टम.कंसोल.आउट के लिए और सिस्टम.कंसोल..त्रुटि के द्वारा संदर्भित किया जाता है। स्टडीन और एसटीडीआउट विधा के लिए मूल रीड और राइट क्षमताएं सीधे सिस्टम.कंसोल कक्षा के माध्यम से भी पहुंचनी योग्य होती हैं (उदाहरण के लिए,सिस्टम.कंसोल आउट.राइट लाइन () के अतिरिक्त सिस्टम.कंसोल आउट.राइट लाइन () का उपयोग किया जा सकता है)।


       // C# example
public static int Main(string[] args)
{
    try {
        string s = System.Console.In.ReadLine();
        double number = double.Parse(s);
        System.Console.Out.WriteLine("Number is: {0:F3}", number);
        return 0;

    // If Parse() threw an exception
    } catch (ArgumentNullException) { 
        System.Console.Error.WriteLine("No number was entered!");
    } catch (FormatException) {
        System.Console.Error.WriteLine("The specified value is not a valid number!");
    } catch (OverflowException) {
        System.Console.Error.WriteLine("The specified number is too big!");
    }

    return -1;
}
  ' Visual Basic .NET example
Public Function Main() As Integer
    Try
        Dim s As String = System.Console.[In].ReadLine()
        Dim number As Double = Double.Parse(s)
        System.Console.Out.WriteLine("Number is: {0:F3}", number)
        Return 0

    ' If Parse() threw an exception
    Catch ex As System.ArgumentNullException
        System.Console.[Error].WriteLine("No number was entered!")
    Catch ex2 As System.FormatException
        System.Console.[Error].WriteLine("The specified value is not a valid number!")
    Catch ex3 As System.OverflowException
        System.Console.[Error].WriteLine("The specified number is too big!")
    End Try

    Return -1
End Function
   

सिस्टम.डायग्नोस्टिक्स.प्रोसेस कक्षा का उपयोग करते समय, उस कक्षा के उदाहरण गुण StandardInput, StandardOutput और StandardError का उपयोग प्रक्रिया के मानक स्ट्रीम्स तक पहुंचने के लिए किया जा सकता है।

2000 -: पायथन (2 या 3)

निम्नलिखित उदाहरण में दिखाया गया है कि कैसे मानक इनपुट को साथ ही मानक आउटपुट और एक पाठ फ़ाइल में पुनर्निर्देशित किया जाता है

  #!/usr/bin/env python
1 import sys
2 # Save the current stdout so that we can revert sys.stdout
3 #  after we complete our redirection
4 stdin_fileno = sys.stdin
5 stdout_fileno = sys.stdout
6 # Redirect sys.stdout to the file
7 sys.stdout = open('myfile.txt', 'w') 8ctr = 0
9 for inps in stdin_fileno:
10 ctrs = str(ctr)
11 # Prints to the redirected stdout ()
12  sys.stdout.write(ctrs + ") this is to the redirected --->" + inps + '\n')
13  # Prints to the actual saved stdout handler
14  stdout_fileno.write(ctrs + ") this is to the actual  --->" + inps + '\n')
15  ctr = ctr + 1
16  # Close the file
17  sys.stdout.close()
18  # Restore sys.stdout to our old saved file handler
19 sys.stdout = stdout_fileno

जीयूआई

ग्राफिकल यूज़र इंटरफ़ेस (जीयूआई) हमेशा मानक स्ट्रीम्स का उपयोग नहीं करते हैं; जब जीयूआई मूल स्क्रिप्ट और/या कंसोल प्रोग्राम के अलग-अलग पैकेज को लपेटते हैं, उन समयों में करते हैं, जैसे कि डेबियन और/या उबंटू में अपार्ट आदेशों को लपेटता है सिनैप्टिक पैकेज मैनेजर जीयूआई। ज़ेनिटी और केडीई परियोजना द्वारा बनाए गए के-संवाद जैसे स्क्रिप्टिंग टूल के साथ बनाए गए जीयूआई में स्टडीन, स्टडआउट और स्टडर का उपयोग किया जाता है, और ये साधारित स्क्रिप्ट पर आधारित होते हैं जबकि C/C++ या अन्य समकक्ष एक पूरी जीयूआई कोड करके कंपाइल किया जाता है जिसमें क्यूटी (सॉफ्टवेयर), जीटीके या अन्य प्राधिकरणीय विजेट फ्रेमवर्क का उपयोग होता है।

नेक्स्टस्टेप और मैक ओएस एक्स पर लागू किए जाने वाले सेवाएं मानक विधा के समकक्ष भी हैं। इन ऑपरेटिंग सिस्टम पर, ग्राफिकल एप्लिकेशन सिस्टम-व्यापी मेनू के माध्यम से कार्यक्षमता प्रदान कर सकते हैं जो जीयूआई में वर्तमान चयनपर कार्य करता है

कुछ जीयूआई प्रोग्राम, मुख्य रूप से यूनिक्स पर, अभी भी मानक त्रुटि के लिए डिबग जानकारी लिखते हैं। अन्य मानक इनपुट से फ़ाइलें पढ़ सकते हैं। लोकप्रिय विंडोज प्रोग्राम जो अपने जीयूआई विंडो के अतिरिक्त एक अलग कंसोल विंडो खोलते हैं, एमुलेटर पीएसएक्स और डॉसबॉक्स हैं।

जीटीके-सर्वर एक जीयूआई को साकार करने के लिए व्याख्या किए गए प्रोग्राम के साथ एक संचार इंटरफेस के रूप में स्टडिन का उपयोग कर सकता है।

सीएलआईएम प्रतिमान एक विस्तारित आउटपुट विधा में भेजे गए जीयूआई तत्वों को प्रस्तुत करता है।

यह भी देखें

संदर्भ

  1. Johnson, Steve (2013-12-11). "[TUHS] Graphic Systems C/A/T phototypesetter" (Mailing list). Archived from the original on 2020-09-25. Retrieved 2020-11-07.
  2. Revised Report on the Algorithmic Language Algol 68, Edited by A. van Wijngaarden, B.J. Mailloux, J.E.L. Peck, C.H.A. Koster, M. Sintzoff, C.H. Lindsey, L.G.L.T. Meertens and R.G. Fisker, http://www.softwarepreservation.org/projects/ALGOL/report/Algol68_revised_report-AB.pdf, Section 10.3
  3. McIlroy, M. D. (1987). A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986 (PDF) (Technical report). CSTR. Bell Labs. 139.


स्रोत

बाहरी संबंध