स्टड, स्टडआउट और स्टेडर के बारे में उलझन में?


230

मैं इन तीन फाइलों के उद्देश्य से भ्रमित हूं। यदि मेरी समझ सही है, stdinतो वह फ़ाइल है जिसमें कोई प्रोग्राम प्रक्रिया में किसी कार्य को चलाने के लिए अपने अनुरोधों को लिखता है, stdoutक्या वह फ़ाइल है जिसमें कर्नेल अपना आउटपुट लिखता है और यह अनुरोध करने वाली प्रक्रिया से जानकारी को एक्सेस करता है, और stderrफ़ाइल में है जिसमें सभी अपवाद दर्ज किए गए हैं। इन फ़ाइलों को खोलने के लिए कि क्या ये वास्तव में होते हैं, यह जांचने के लिए, मुझे ऐसा कुछ भी नहीं मिला जो ऐसा लगता है!

मैं जानना चाहता हूं कि वास्तव में इन फाइलों का उद्देश्य क्या है, बहुत कम तकनीकी शब्दजाल के साथ बिल्कुल नीचा जवाब!


36
अवलोकन: यह प्रश्न २०१० में वापस स्वीकार्य था, लेकिन आजकल बहुत जल्दी समाप्त हो जाएगा।
byxor

3
@ ब्रेंडन क्या आप कोई कारण बता सकते हैं? मुझे लगता है कि यह आपकी टिप्पणी के लिए मूल्यवान होगा।
स्वतंत्र

3
@byxor निष्पक्ष होने के लिए, मैं पूछूंगा: क्या ऑप्स पोस्ट लोगों से अपने कोड को डीबग करने में मदद करने के लिए कह रहा था? ऐसा लगता है कि शौविक ने स्टड, स्टडआउट और स्टडर के उद्देश्य के बारे में एक प्रश्न पूछा था। सेशन की पोस्ट उत्सुकता से बाहर लगती है, नहीं? (मैं वास्तव में इस बारे में खुद को सीख रहा हूँ। धन्यवाद, एसओ, इस पोस्ट को हटाने के लिए नहीं)
sansae

2
@ user123456 आप सही हैं। मैं एक सॉफ्टवेयर डेवलपर बनना सीख रहा था और एस / ओ वापस तो प्रोग्रामिंग के बारे में जानने के लिए एक शानदार जगह थी। हमने मूल रूप से इसका उद्देश्य सभी विज्ञानों की गणना करने वाले विज्ञानों के लिए एक तरह से विकि सेवा प्रदान करना है। #juniorDevForLife
Shouvik

3
@ सात्विक इतिहास के उस बिट के लिए धन्यवाद। मैं सीख रहा हूँ कि कैसे एक सॉफ्टवेयर डेवलपर बनना है (बस एक शांत शिविर में sf में स्वीकार किया गया है)। मैं अभी भी S / O के लिए काफी नया हूं और अभी भी इस बारे में अनिश्चित हूं कि मैं क्या कर सकता हूं और क्या पोस्ट नहीं कर सकता। मुझे लगता है कि यहां मॉडरेशन काफी सख्त हो सकता है। मुझे वह हैश टैग पसंद है। #juniorDevForLife। मैं आपको यहाँ टिप्पणी करने के बजाय pm करता हूँ क्योंकि यह चर्चा में कुछ नहीं जोड़ता है, लेकिन मुझे विश्वास नहीं है कि S / O में एक pm प्रणाली है। आपका दिन अच्छा रहे।
संवत

जवाबों:


251

मानक इनपुट - यह फ़ाइल हैंडल है जो आपकी प्रक्रिया आपसे जानकारी प्राप्त करने के लिए पढ़ती है।

मानक आउटपुट - आपकी प्रक्रिया इस फ़ाइल को संभालने के लिए सामान्य जानकारी लिखती है।

मानक त्रुटि - आपकी प्रक्रिया इस फ़ाइल हैंडल में त्रुटि जानकारी लिखती है।

के रूप में मैं इसे बना सकते हैं के रूप में के रूप में गूंगा-नीचे है :-)

बेशक, यह ज्यादातर सम्मेलन द्वारा है। यदि आप चाहें तो अपनी त्रुटि जानकारी को मानक आउटपुट पर लिखने से कुछ भी नहीं रोक सकते हैं। तुम भी पूरी तरह से तीन फ़ाइल हैंडल बंद कर सकते हैं और I / O के लिए अपनी खुद की फाइलें खोल सकते हैं।

जब आपकी प्रक्रिया शुरू होती है, तो उसके पास पहले से ही ये हैंडल खुले होने चाहिए और यह सिर्फ उनसे पढ़ सकता है और / या लिख ​​सकता है।

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

एक उदाहरण:

my_prog <inputfile 2>errorfile | grep XYZ

जो होगा:

  • के लिए एक प्रक्रिया बनाएँ my_prog
  • inputfileअपने मानक इनपुट के रूप में खोलें (फ़ाइल हैंडल 0)।
  • errorfileअपनी मानक त्रुटि के रूप में खोलें (फ़ाइल संभाल 2)।
  • के लिए एक और प्रक्रिया बनाएँ grep
  • my_progके मानक इनपुट के मानक आउटपुट को संलग्न करें grep

अपनी टिप्पणी फिर से दें:

जब मैं इन फ़ाइलों को / dev फ़ोल्डर में खोलता हूं, तो मैं कैसे कभी भी एक प्रक्रिया के आउटपुट को देखने के लिए नहीं आ सकता हूं?

ऐसा इसलिए है क्योंकि वे सामान्य फाइलें नहीं हैं। हालांकि UNIX एक फाइल सिस्टम में एक फाइल के रूप में कहीं न कहीं सब कुछ प्रस्तुत करता है, जो इसे न्यूनतम स्तरों पर नहीं बनाता है। /devपदानुक्रम में अधिकांश फाइलें या तो चरित्र या ब्लॉक डिवाइस हैं, प्रभावी रूप से डिवाइस ड्राइवर। उनके पास आकार नहीं है, लेकिन उनके पास एक प्रमुख और मामूली डिवाइस नंबर है।

जब आप उन्हें खोलते हैं, तो आप भौतिक फ़ाइल के बजाय डिवाइस ड्राइवर से कनेक्ट होते हैं, और डिवाइस ड्राइवर यह जानने के लिए पर्याप्त स्मार्ट होता है कि अलग-अलग प्रक्रियाओं को अलग-अलग संभाला जाए।

लिनक्स /procफाइल सिस्टम के लिए भी यही सच है । वे असली फाइलें नहीं हैं, बस कर्नेल जानकारी के लिए कसकर नियंत्रित गेटवे हैं।


1
आपकी प्रतिक्रिया के लिए Thats जब मैं आपके द्वारा वर्णित फ़ाइलों के उद्देश्य को समझ सकता हूं, तो मैं एक स्तर और आगे बढ़ना चाहूंगा। जब मैं इन फ़ाइलों को / dev फ़ोल्डर में खोलता हूं, तो मैं कभी भी किसी प्रक्रिया के आउटपुट को देखने के लिए नहीं आता। मान लें कि मैं टर्मिनल पर शीर्ष निष्पादित करता हूं, क्या यह समय-समय पर stdout फ़ाइल पर अपने परिणामों को आउटपुट करने के लिए नहीं है, इसलिए जब इसे अपडेट किया जा रहा है तो मुझे इस फ़ाइल पर मुद्रित होने वाले आउटपुट का एक उदाहरण देखने में सक्षम होना चाहिए। लेकिन ऐसा नहीं है .. तो क्या ये फाइलें समान नहीं हैं (/ देव निर्देशिका में)।
शौविक

7
क्योंकि वे तकनीकी रूप से फाइलें नहीं हैं। वे डिवाइस नोड हैं, जो लिखने के लिए एक विशिष्ट डिवाइस का संकेत देते हैं। UNIX आपके लिए एक फ़ाइल अमूर्त के रूप में सब कुछ प्रस्तुत कर सकता है, लेकिन यह गहरे स्तर पर ऐसा नहीं करता है।
paxdiablo

1
शेल पुनर्निर्देशन क्षमता का उपयोग करें। xyz >xyz.outएक भौतिक फ़ाइल के लिए अपने मानक आउटपुट लिखेंगे जिसे अन्य प्रक्रियाओं द्वारा पढ़ा जा सकता है। स्टडआउट को अधिक सीधे स्टड से xyz | grep somethingजोड़ देगा । यदि आप किसी ऐसे प्रॉसेस पर अनफिट एक्सेस करना चाहते हैं, जिस पर आपका नियंत्रण नहीं है, तो आपको किसी तरह कर्नेल में हुक करके आउटपुट को फ़िल्टर करने के लिए कुछ लिखने या कोड लिखने की आवश्यकता होगी । वहाँ अन्य समाधान हो सकता है, लेकिन वे सभी शायद एक दूसरे के रूप में खतरनाक हैं :-)xyzgrep/proc
paxdiablo

20
@ स्कोविक, ध्यान दें कि /dev/stdinयह एक सिमलिंक है /proc/self/fd/0- पहला फाइल डिस्क्रिप्टर जो वर्तमान में चल रहे प्रोग्राम में खुला है। इसलिए, जो इंगित किया गया है /dev/stdinवह कार्यक्रम से कार्यक्रम में बदल जाएगा, क्योंकि /proc/self/हमेशा 'वर्तमान में चल रहे कार्यक्रम' की ओर इशारा करता है । (जो भी प्रोग्राम openकॉल कर रहा है ।) /dev/stdinऔर दोस्तों को वहाँ सेटुइल शेल स्क्रिप्ट्स को सुरक्षित बनाने के लिए रखा गया था, और आपको /dev/stdinप्रोग्राम को फाइलनाम पास करना है जो केवल फाइलों के साथ काम करता है, लेकिन आप अधिक संवादात्मक रूप से नियंत्रित करना चाहते हैं। (किसी दिन यह जानना आपके लिए एक उपयोगी चाल होगी। :)
सरनॉल्ड

1
@ CarlosW.Mercado, एक फ़ाइल डेटा की एक भौतिक अभिव्यक्ति है। उदाहरण के लिए, हार्ड डिस्क पर संग्रहीत बिट्स। एक फ़ाइल हैंडल (आमतौर पर) उस फ़ाइल को संदर्भित करने के लिए इस्तेमाल किया जाने वाला एक छोटा टोकन होता है, जिसे आपने एक बार खोला है।
paxdiablo

62

ऐसा नहीं है कि कहने के लिए और अधिक सही होगा stdin, stdoutऔर stderrकर रहे हैं "मैं / हे धाराओं" बल्कि फ़ाइलों से। जैसा कि आपने देखा है, ये निकाय फाइल सिस्टम में नहीं रहते हैं। लेकिन यूनिक्स दर्शन, जहां तक ​​I / O का संबंध है, "सब कुछ एक फ़ाइल है"। अभ्यास में, जो वास्तव में इसका मतलब है कि आप एक ही पुस्तकालय कार्यों और इंटरफेस (उपयोग कर सकते हैं printf, scanf, read, write, selectआई / ओ धारा एक कुंजीपटल, एक डिस्क फ़ाइल, सॉकेट, एक पाइप से जुड़ा है कि क्या के बारे में चिंता किए बिना, आदि), या कुछ अन्य आई / ओ अमूर्त।

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


आपके इनपुट के लिए धन्यवाद। क्या आप जानते हैं कि मैं किसी प्रक्रिया की आउटपुट डेटा स्ट्रीम को कैसे इंटरसेप्ट कर सकता हूं और इसे अपनी खुद की फाइल में आउटपुट कर सकता हूं?
शौविक

51

उपरोक्त उत्तरों के पूरक के रूप में, यहां पुनर्निर्देशन के बारे में एक सारांश दिया गया है: पुनर्निर्देशन धोखा देती है

संपादित करें: यह ग्राफिक पूरी तरह से सही नहीं है लेकिन मुझे यकीन नहीं है कि क्यों ...

ग्राफिक कहता है कि 2> और 1 का हालांकि और> के समान ही प्रभाव है

ls Documents ABC > dirlist 2>&1
#does not give the same output as 
ls Documents ABC > dirlist &>

4
स्वीकृत उत्तर के साथ आपकी टिप्पणी का सही अर्थ है और स्पष्ट रूप से चीजों को समझाता है! धन्यवाद!
मायकोला

1
एक तस्वीर एक हजार शब्दों के बराबर होती है !
tauseef_CuriousGuy 10

22

मुझे डर है कि आपकी समझ पूरी तरह से पीछे है। :)

प्रोग्राम के दृष्टिकोण से "मानक", "मानक आउट" और "मानक त्रुटि" के बारे में सोचें , न कि कर्नेल के दृष्टिकोण से।

जब किसी प्रोग्राम को आउटपुट प्रिंट करने की आवश्यकता होती है, तो यह आम तौर पर "मानक आउट" प्रिंट करता है। एक प्रोग्राम आम तौर पर आउटपुट को मानक से printfप्रिंट करता है, जो केवल मानक से बाहर प्रिंट करता है।

जब किसी प्रोग्राम को त्रुटि जानकारी प्रिंट करने की आवश्यकता होती है (आवश्यक रूप से अपवाद नहीं, तो वे प्रोग्रामिंग-भाषा के निर्माण होते हैं, बहुत उच्च स्तर पर लगाए जाते हैं), यह सामान्य रूप से "मानक त्रुटि" को प्रिंट करता है। यह सामान्य रूप से ऐसा करता है fprintf, जो मुद्रण करते समय उपयोग करने के लिए एक फ़ाइल स्ट्रीम स्वीकार करता है। मानक बाहर, मानक त्रुटि, या किसी अन्य फ़ाइल उस के साथ खोल दिया गया है: फ़ाइल धारा लिखने के लिए खोला किसी भी फाइल हो सकता है fopenया fdopen

"मानक" का उपयोग तब किया जाता है जब फ़ाइल को इनपुट, उपयोग freadया fgets, पढ़ने की आवश्यकता होती है getchar

इनमें से कोई भी फाइल शेल से आसानी से पुनर्निर्देशित की जा सकती है , जैसे:

cat /etc/passwd > /tmp/out     # redirect cat's standard out to /tmp/foo
cat /nonexistant 2> /tmp/err   # redirect cat's standard error to /tmp/error
cat < /etc/passwd              # redirect cat's standard input to /etc/passwd

या, पूरा एंचिलाड़ा:

cat < /etc/passwd > /tmp/out 2> /tmp/err

दो महत्वपूर्ण चेतावनी हैं: पहला, "मानक", "मानक आउट" और "मानक त्रुटि" केवल एक सम्मेलन है। वे एक बहुत मजबूत सम्मेलन हैं, लेकिन यह सब सिर्फ एक समझौता है कि इस तरह से कार्यक्रम चलाने में सक्षम होना बहुत अच्छा है: grep echo /etc/services | awk '{print $2;}' | sortऔर पाइपलाइन में अगले कार्यक्रम के मानक इनपुट में झुके हुए प्रत्येक कार्यक्रम के मानक आउटपुट हैं।

दूसरा, मैंने फ़ाइल धाराओं ( FILE *ऑब्जेक्ट्स) के साथ काम करने के लिए मानक ISO C फ़ंक्शंस दिए हैं - कर्नेल स्तर पर, यह सभी फ़ाइल डिस्क्रिप्टर ( intफ़ाइल टेबल के संदर्भ) और जैसे readऔर निचले स्तर के ऑपरेशन हैं write, जो नहीं करते हैं आईएसओ सी कार्यों के खुश बफ़रिंग करते हैं। मुझे लगा कि इसे सरल रखना है और आसान कार्यों का उपयोग करना है, लेकिन मैंने सोचा कि आप सभी को विकल्प जानना चाहिए। :)


तो यह तब होता है जब इस प्रक्रिया को निष्पादित किया जा रहा है कि यह इस stderr फ़ाइल पर त्रुटियों को लिखता है या जब प्रोग्राम को इसके स्रोत से संकलित किया जा रहा है। जब हम कम्पाइलर के दृष्टिकोण से इन फ़ाइलों के बारे में बात करते हैं तो क्या यह एक प्रोग्राम के साथ तुलना की जाती है?
शौविक

1
@ स्कोविक, संकलक सिर्फ एक और कार्यक्रम है, जिसमें अपने स्वयं के स्टड, स्टडआउट, और स्टेडर हैं। जब कंपाइलर को चेतावनी या त्रुटियों को लिखने की आवश्यकता होती है, तो यह उन्हें स्टेटरर को लिख देगा। जब कंपाइलर फ्रंट-एंड, कोडांतरक के लिए इंटरमीडिएट कोड आउटपुट करता है, तो यह स्टडआउट पर इंटरमीडिएट कोड लिख सकता है और असेंबलर स्टड पर इसके इनपुट को स्वीकार कर सकता है, लेकिन यह सब एक उपयोगकर्ता के रूप में आपके दृष्टिकोण से पर्दे के पीछे होगा।) एक बार आप। संकलित कार्यक्रम, वह कार्यक्रम अपनी मानक त्रुटि के साथ-साथ त्रुटियों को भी लिख सकता है, लेकिन इसका संकलित होने से कोई लेना-देना नहीं है।
सरनाल्ड

जानकारी के उस टोकन के लिए धन्यवाद। मुझे लगता है कि यह मेरे लिए बहुत अच्छा है कि इसे उस परिप्रेक्ष्य में वैसे भी न देखें ...: पी
शौविक

1
तो आप कह रहे हैं कि मानक हमें कार्यक्रम को प्रिंट करने में मदद करता है
babygame0ver

9

stdin

कंसोल के माध्यम से इनपुट पढ़ता है (जैसे कीबोर्ड इनपुट)। स्कैनफ के साथ सी में उपयोग किया जाता है

scanf(<formatstring>,<pointer to storage> ...);

stdout

कंसोल को आउटपुट देता है। सी में प्रिंटफ के साथ उपयोग किया जाता है

printf(<string>, <values to print> ...);

stderr

कंसोल के लिए 'त्रुटि' आउटपुट उत्पन्न करता है। C में fprintf के साथ प्रयोग किया जाता है

fprintf(stderr, <string>, <values to print> ...);

पुनर्निर्देशन

स्टड के लिए स्रोत को पुनर्निर्देशित किया जा सकता है। उदाहरण के लिए, कीबोर्ड इनपुट से आने के बजाय, यह फ़ाइल ( echo < file.txt), या किसी अन्य प्रोग्राम ( ps | grep <userid>) से आ सकता है।

स्टडआउट, स्टेडर के लिए स्थलों को पुनर्निर्देशित भी किया जा सकता है। उदाहरण के लिए stdout को किसी फ़ाइल पर पुनर्निर्देशित किया जा सकता है: ls . > ls-output.txtइस स्थिति में आउटपुट फ़ाइल में लिखा जाता है ls-output.txtStderr के साथ पुनर्निर्देशित किया जा सकता है2>


8

मुझे लगता है कि लोगों को यह कहना stderrचाहिए कि केवल त्रुटि संदेशों के लिए उपयोग किया जाना चाहिए।

यह उन सूचनात्मक संदेशों के लिए भी उपयोग किया जाना चाहिए जो कमांड चलाने वाले उपयोगकर्ता के लिए हैं और डेटा के किसी भी संभावित डाउनस्ट्रीम उपभोक्ताओं के लिए नहीं हैं (अर्थात यदि आप कई कमांडों का पीछा करते हुए शेल पाइप चलाते हैं, तो आप जानकारी प्राप्त नहीं करना चाहते हैं जैसे "आइटम 30 प्राप्त करना" 42424 " stdoutउपभोक्ता के रूप में भ्रमित करने के लिए दिखाई देगा , लेकिन आप अभी भी उपयोगकर्ता को उन्हें देखना चाहते हैं।

इसे ऐतिहासिक औचित्य के लिए देखें :

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


3

Ps -aux के उपयोग से वर्तमान प्रक्रियाओं का पता चलता है, जो सभी बिल्ली / proc / (pid) / कॉल करके / proc / as / proc / (pid) में सूचीबद्ध हैं, / fd / 0 यह कुछ भी प्रिंट करता है जो मानक आउटपुट में पाया जाता है मुझे लगता है कि प्रक्रिया। तो शायद,

/ proc / (pid) / fd / 0 - मानक आउटपुट फ़ाइल
/ proc / (pid) / fd / 1 - मानक इनपुट फ़ाइल
/ proc / (pid) / fd / 2 - मानक त्रुटि फ़ाइल

उदाहरण के लिएमेरी टर्मिनल विंडो

लेकिन केवल / बिन / बैश अन्य प्रक्रियाओं के लिए यह अच्छी तरह से काम करता था आम तौर पर 0 में कुछ भी नहीं था, लेकिन कई में 2 गलतियां थीं


3

इन फ़ाइलों के बारे में आधिकारिक जानकारी के लिए, मैन पेज देखें, अपने टर्मिनल पर कमांड चलाएँ।

$ man stdout 

लेकिन एक सरल उत्तर के लिए, प्रत्येक फ़ाइल निम्न के लिए है:

बाहर एक धारा के लिए stdout

एक स्ट्रीम इनपुट के लिए स्टडिन

त्रुटियों या लॉग संदेशों को प्रिंट करने के लिए stderr

प्रत्येक यूनिक्स कार्यक्रम में उन धाराओं में से प्रत्येक है।


2

Stderr IO Cache बफ़रिंग नहीं करेगा, इसलिए यदि हमारे एप्लिकेशन को कंसोल के लिए महत्वपूर्ण संदेश जानकारी (कुछ त्रुटियों, अपवादों) को प्रिंट करने या इसे उपयोग करने की आवश्यकता है, जहां सामान्य लॉग जानकारी को प्रिंट करने के लिए stdout का उपयोग करें क्योंकि यह IO कैश बफ़र करने का एक मौका है। डिबगिंग कॉम्प्लेक्स को छोड़ने के लिए हमारे संदेश फाइल करने से पहले आवेदन बंद हो सकता है


0

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

https://www.mkssoftware.com/docs/man5/stdio.5.asp

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