"यूनिक्स पर्यावरण में उन्नत प्रोग्रामिंग", द्वितीय संस्करण, डब्ल्यू रिचर्ड स्टीवंस द्वारा।कोई भी फोर्क() के बाद 'फ़ाइल डिस्क्रिप्टर' के बारे में एक सरल विवरण समझा सकता है?
धारा 8.3 कांटा समारोह।
यह महत्वपूर्ण है माता-पिता और बच्चे ऑफसेट एक ही फाइल का हिस्सा है कि:
यहाँ विवरण दिया गया है।
एक ऐसी प्रक्रिया पर विचार करें जो बच्चे को फोर्क करता है, फिर बच्चे को पूरा करने की प्रतीक्षा करता है। मान लें कि दोनों प्रक्रियाएं सामान्य आउटपुट को उनके सामान्य प्रसंस्करण के हिस्से के रूप में लिखती हैं। यदि अभिभावक के पास मानक आउटपुट रीडायरेक्ट किया गया है (एक खोल से, शायद) यह आवश्यक है कि जब बच्चे मानक आउटपुट पर लिखता है तो माता-पिता की फ़ाइल ऑफ़सेट बच्चे द्वारा अपडेट की जाती है।
[1। इसका क्या मतलब है? अगर माता-पिता के std आउटपुट को 'file1' पर रीडायरेक्ट किया गया है, तो बच्चे के लिखने के बाद बच्चे को क्या अपडेट करना चाहिए? माता-पिता का मूल std आउटपुट ऑफसेट या रीडायरेक्ट आउटपुट (i.e file1) ऑफसेट? बाद में नहीं हो सकता है, है ना?]
[2। अपडेट कैसे किया जाता है? बच्चे द्वारा स्पष्ट रूप से, ओएस द्वारा निस्संदेह, फाइल डिस्क्रिप्टर द्वारा स्वयं? कांटा के बाद, मैंने सोचा कि माता-पिता और बच्चे अपने तरीके से गए हैं और फ़ाइल डिस्क्रिप्टर की अपनी कॉपी है। तो बच्चे को मूल पक्ष में ऑफसेट कैसे अपडेट किया जाता है?]
इस मामले में, बच्चे मानक आउटपुट पर लिख सकता है जबकि माता-पिता इसके लिए प्रतीक्षा कर रहे हैं; बच्चे के पूरा होने पर, माता-पिता मानक आउटपुट में लिखना जारी रख सकते हैं, यह जानकर कि उसके आउटपुट को बच्चे द्वारा लिखे गए किसी भी चीज़ में जोड़ा जाएगा। यदि माता-पिता और बच्चे ने एक ही फ़ाइल ऑफसेट साझा नहीं किया है, तो इस प्रकार की बातचीत को पूरा करना अधिक कठिन होगा और माता-पिता द्वारा स्पष्ट कार्रवाइयों की आवश्यकता होगी।
यदि माता-पिता और बच्चे दोनों एक ही डिस्क्रिप्टर को लिखते हैं, बिना सिंक्रनाइज़ेशन के किसी भी प्रकार के, जैसे माता-पिता बच्चे के लिए प्रतीक्षा करते हैं, तो उनका आउटपुट इंटरमीक्स किया जाएगा (माना जाता है कि यह एक वर्णक है जो कांटा से पहले खुला था)। हालांकि यह संभव है, यह ऑपरेशन का सामान्य तरीका नहीं है।
एक कांटा के बाद वर्णनकर्ताओं को संभालने के लिए दो सामान्य मामले हैं।
माता-पिता बच्चे को पूरा करने की प्रतीक्षा करता है। इस मामले में, माता-पिता को अपने वर्णनकर्ताओं के साथ कुछ भी करने की आवश्यकता नहीं है। जब बच्चा समाप्त हो जाता है, तो बच्चे द्वारा पढ़ने या लिखने के लिए साझा किए गए किसी भी वर्णित वर्णनकर्ता के अनुसार उनके फ़ाइल ऑफ़सेट अपडेट किए जाएंगे।
माता-पिता और बच्चे दोनों अपने तरीके से जाते हैं। यहां, कांटा के बाद, माता-पिता उन वर्णनकर्ताओं को बंद कर देते हैं जिनकी आवश्यकता नहीं होती है, और बच्चा वही काम करता है। इस तरह, न तो दूसरे के खुले वर्णनकर्ताओं में हस्तक्षेप करता है। इस परिदृश्य अक्सर नेटवर्क सर्वर के साथ मामला जब कांटा() उत्पन्न होता है, सब मुझे समझ है कि बच्चे इस मामले में क्या माता पिता है, फ़ाइल वर्णनकर्ता की एक प्रति प्राप्त है। "
[3, और इसकी बात करता है। यदि किसी भी वर्णनकर्ता दायर करने के लिए माता-पिता और बच्चे हिस्सा है, यह केवल किया जा सकता है क्योंकि वर्णनकर्ता याद ही ऑफसेट परिवर्तन ऑफसेट। क्या मैं सही हूँ?]
खेद है कि मैं तरह अवधारणाओं के लिए नए की कर रहा हूँ ।
कोई मदद? धन्यवाद।
एलन, स्पष्टीकरण बहुत अच्छा है! समय लेने और एक नौसिखिया के लिए इस तरह के विस्तार में व्याख्या करने के लिए धन्यवाद। – user1559625
@AlanCurry क्या होगा अगर मैं मूल कार्यक्रम में प्रतीक्षा() का उपयोग नहीं करता?क्या मूल विवरण बाहर निकलने के रूप में फ़ाइल विवरण मुक्त होगा? – Nmzzz
सहायक! धन्यवाद! – Kross