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

From Vigyanwiki
Line 89: 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>.


{|
{|
Line 112: 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>


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


<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> क्रमश।
<वाक्यविन्यास प्रकाश लैंग = सी #>
        // C# example
// सी # उदाहरण
सार्वजनिक स्थैतिक पूर्णांक मुख्य (स्ट्रिंग [] तर्क)
{
    कोशिश {
        स्ट्रिंग एस = System.Console.In.ReadLine ();
        डबल नंबर = डबल। पार्स (ओं);
        System.Console.Out.WriteLine(संख्या है: {0:F3} , संख्या);
        वापसी 0;


    // अगर पार्स () ने एक अपवाद फेंक दिया
public static int Main(string[] args)
    } कैच (ArgumentNullException) {
{
        System.Console.Error.WriteLine (कोई नंबर दर्ज नहीं किया गया था!);
    try {
    } कैच (प्रारूप अपवाद) {
        string s = System.Console.In.ReadLine();
        System.Console.Error.WriteLine (निर्दिष्ट मान मान्य संख्या नहीं है!);
        double number = double.Parse(s);
    } कैच (ओवरफ्लो अपवाद) {
        System.Console.Out.WriteLine("Number is: {0:F3}", number);
        System.Console.Error.WriteLine (निर्दिष्ट संख्या बहुत बड़ी है!);
        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;
}


    वापसी -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
' विजुअल बेसिक .NET उदाहरण
   
सिस्टम.डायग्नोस्टिक्स.प्रोसेस कक्षा का उपयोग करते समय, उस कक्षा के उदाहरण गुण StandardInput, StandardOutput और StandardError का उपयोग प्रक्रिया के मानक स्ट्रीम्स तक पहुंचने के लिए किया जा सकता है।


सार्वजनिक समारोह मुख्य () पूर्णांक के रूप में
===2000 -: पायथन (2 या 3) ===
    कोशिश
निम्नलिखित उदाहरण में दिखाया गया है कि कैसे मानक इनपुट को साथ ही मानक आउटपुट और एक पाठ फ़ाइल में पुनर्निर्देशित किया जाता है
        Dim s as String = System.Console.[In].ReadLine()
        डबल के रूप में मंद संख्या = डबल। पार्स (एस)
        System.Console.Out.WriteLine( संख्या है: {0:F3} , संख्या)
        वापसी 0


    ' अगर पार्स() ने अपवाद फेंक दिया
  #!/usr/bin/env python
    Ex को System.ArgumentNullException के रूप में पकड़ें
        System.Console। [त्रुटि]। राइटलाइन (कोई संख्या दर्ज नहीं की गई थी!)
    Ex2 को System.FormatException के रूप में पकड़ें
        System.Console। [त्रुटि]। राइटलाइन (निर्दिष्ट मान मान्य संख्या नहीं है!)
    Ex3 को System.OverflowException के रूप में पकड़ें
        System.Console। [त्रुटि]। राइटलाइन (निर्दिष्ट संख्या बहुत बड़ी है!)
    प्रयास समाप्त करें


    वापसी -1
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
आवेदन करते समय <code>System.Diagnostics.Process</code> [[कक्षा (कंप्यूटर विज्ञान)]] उदाहरण [[संपत्ति (प्रोग्रामिंग)]] का उपयोग कर सकते हैं <code>StandardInput</code>, <code>StandardOutput</code>, और <code>StandardError</code> प्रक्रिया की मानक धाराओं तक पहुँचने के लिए उस वर्ग का।
5 stdout_fileno = sys.stdout
 
6 # Redirect sys.stdout to the file
===2000 - : पायथन (2 या 3) ===
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 ()
<वाक्यविन्यास लैंग = पायथन लाइन = 1>
12  sys.stdout.write(ctrs + ") this is to the redirected --->" + inps + '\n')
#!/usr/bin/env python
13  # Prints to the actual saved stdout handler
आयात प्रणाली
14  stdout_fileno.write(ctrs + ") this is to the actual  --->" + inps + '\n')
# मौजूदा स्टडआउट को सेव करें ताकि हम sys.stdout को वापस ला सकें
15  ctr = ctr + 1
# हमारे द्वारा अपना पुनर्निर्देशन पूरा करने के बाद
16  # Close the file
stdin_fileno = sys.stdin
17  sys.stdout.close()
stdout_fileno = sys.stdout
18  # Restore sys.stdout to our old saved file handler
# फ़ाइल के लिए sys.stdout को पुनर्निर्देशित करें
19 sys.stdout = stdout_fileno
sys.stdout = open('myfile.txt', 'w')
सीटीआर = 0
stdin_fileno में आईपीएस के लिए:
    सीटीआर = एसटीआर (सीटीआर)
    # पुनर्निर्देशित स्टडआउट पर प्रिंट करता है ()
    sys.stdout.write(ctrs + ) यह पुन: निर्देशित करने के लिए है ---> + inps + '\n')
    # वास्तविक सहेजे गए स्टडआउट हैंडलर को प्रिंट करता है
    stdout_fileno.write(ctrs + ) यह वास्तविक है ---> + inps + '\n')
    सीटीआर = सीटीआर + 1
# फ़ाइल बंद करें
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 |डॉसबॉक्स]] हैं।


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

Revision as of 10:38, 26 June 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.


स्रोत

बाहरी संबंध