तीन "सिस्टम फ़ाइल टेबल" के होते हैं: एक फ़ाइल वर्णनकर्ता तालिका फ़ाइल खोलने सारणी की प्रविष्टियों के फ़ाइल वर्णनकर्ता (छोटे पूर्णांक) नक्शे नहीं है। खुली फ़ाइल तालिका में प्रत्येक प्रविष्टि में (अन्य चीजों के साथ) फ़ाइल ऑफ़सेट और इन-मेमोरी इनोड तालिका में पॉइंटर होता है। यहाँ एक चित्र है: http://www.cs.ucsb.edu/~rich/class/cs170/notes/FileSystem/filetable.rich.jpg
तो वहाँ न तो एक फ़ाइल खोलने के लिए सिर्फ एक फ़ाइल तालिका प्रविष्टि है और न ही वहाँ सिर्फ प्रक्रिया के अनुसार एक है ... वहाँ प्रति open()
कॉल से एक है, और यह साझा किया जाता है, तो फ़ाइल वर्णनकर्ता dup()
एड है या fork()
एड।
अपने प्रश्नों का उत्तर देना:
1) दो या अधिक प्रक्रियाओं पढ़ने के लिए एक फ़ाइल को खोलने है, वहाँ खुला प्रति खुले फ़ाइल तालिका में एक प्रविष्टि है। यहां तक कि प्रति अगर खुला एक प्रक्रिया फ़ाइल को कई बार खुल जाता है एक प्रविष्टि है।
2) एक ही प्रविष्टि एक ही फ़ाइल खोलने वाली विभिन्न प्रक्रियाओं के लिए खुली फ़ाइल तालिका में बनाई गई नहीं है (लेकिन इन-मेमोरी इनोड तालिका में केवल एक प्रविष्टि है)।
3) file1.txt एक ही या दो अलग अलग प्रक्रियाओं में दो बार खोला जाता है,, वहाँ दो अलग फ़ाइल खोलने तालिका प्रविष्टियों (लेकिन इन-स्मृति inode तालिका में केवल एक प्रविष्टि) कर रहे हैं।
स्रोत
2013-01-07 04:51:48
http://stackoverflow.com/questions/4277289/are-file-descriptors-shared-when-forking –
सर की Dup से है? वह माता-पिता और कांटा सामान के बारे में पूछ रहा है, मेरा प्रश्न अलग है – Alfred