के बीच अंतर यदि मैं fopen
फ़ाइल करता हूं, तो fclose
या close
पर कॉल करने के बीच क्या अंतर है और मुझे किस का उपयोग करना चाहिए?फ्लेक्ज़ और बंद
अगर फोर्क किए गए बच्चों को फ़ाइल तक पहुंच है, तो वे फ़ाइल के साथ समाप्त होने पर क्या करना चाहिए?
के बीच अंतर यदि मैं fopen
फ़ाइल करता हूं, तो fclose
या close
पर कॉल करने के बीच क्या अंतर है और मुझे किस का उपयोग करना चाहिए?फ्लेक्ज़ और बंद
अगर फोर्क किए गए बच्चों को फ़ाइल तक पहुंच है, तो वे फ़ाइल के साथ समाप्त होने पर क्या करना चाहिए?
fclose()
साथ फ़ाइल धाराओं संबंधित कार्य है। जब आप fopen()
की सहायता से फ़ाइल खोलते हैं और FILE *ptr
पर स्ट्रीम असाइन करते हैं। फिर आप खुले फ़ाइल को बंद करने के लिए fclose()
का उपयोग करेंगे।
close()
फ़ाइल डिस्क्रिप्टर से संबंधित एक फ़ंक्शन है। जब आप open()
की सहायता से फ़ाइल खोलते हैं और int fd
पर डिस्क्रिप्टर असाइन करते हैं। फिर आप खुली फ़ाइल को बंद करने के लिए close()
का उपयोग करेंगे।
कार्यों fopen()
की तरह, fclose()
आदि जबकि open()
की, close()
आदि अन्य श्रेणी POSIX-विशिष्ट होते हैं, सी मानक कार्यों हैं। इसका मतलब है कि open()
, close()
आदि के साथ लिखा गया कोड मानक सी कोड नहीं है और इसलिए गैर-पोर्टेबल है। जबकि fopen()
, fclose
आदि के साथ लिखा गया कोड एक मानक कोड है और किसी भी प्रकार की प्रणाली पर पोर्ट किया जा सकता है।
मुझे किस का उपयोग करना चाहिए?
यह इस बात पर निर्भर करता है कि आपने फ़ाइल को कैसे खोला है। यदि आप fopen()
के साथ फ़ाइल खोलते हैं, तो आपको fclose()
का उपयोग करना चाहिए और यदि आप open()
के साथ फ़ाइल खोलते हैं, तो आपको close()
का उपयोग करना चाहिए।
अगर फोर्क किए गए बच्चों को फ़ाइल तक पहुंच है, तो वे फ़ाइल के साथ समाप्त होने पर क्या करना चाहिए?
यह भी निर्भर है कि आपने fork()
कॉल किया था: फ़ाइल खोलने से पहले या इसे खोलने के बाद।
देखें: Are file descriptors shared when fork()ing?
देखें: man fclose
और man close
open()
और close()
यूनिक्स सिस्कोल हैं जो write()
जैसे अन्य यूनिक्स सिस्कोल के साथ उपयोग के लिए यूनिक्स सिस्कोल लौटते हैं और फाइल डिस्क्रिप्टर लेते हैं। fopen()
और fclose()
मानक सी लाइब्रेरी फ़ंक्शन हैं जो FILE*
पर संचालित होते हैं, fwrite
और fprintf
जैसी चीज़ों के साथ उपयोग के लिए। उत्तरार्द्ध लगभग हमेशा होता है जो आपको उपयोग करना चाहिए: वे सरल और अधिक क्रॉस-प्लेटफॉर्म हैं।
अपने दूसरे प्रश्न का सवाल है, काँटेदार बच्चों के माता पिता के रूप में ही सांख्यिक फ़ाइल वर्णनकर्ता है, लेकिन यह एक प्रति है, वे इसे बंद कर सकते हैं, और यह अभी भी माता-पिता और अन्य बच्चों के लिए खुलेगा। (हालांकि व्यक्तिगत रूप से, मैं fork()
पर फ़ाइलों को खोलना पसंद नहीं करता ... मैं उस तरह के साझा संसाधन उपयोग को स्पष्ट करना चाहता हूं। निश्चित रूप से पाइप्स अपवाद हैं।)
मुझे किस का उपयोग करना चाहिए?
यदि आप fopen
के साथ फ़ाइल खोलते हैं, तो इसे fclose
के साथ बंद करें। close
का उपयोग इस मामले में fopen
द्वारा आवंटित एक हैंडल पर मेमोरी लीक का कारण बन सकता है याद रखने के लिए एक और बात। सी फ़ाइल * स्ट्रीम आंतरिक रूप से buffered I/O का उपयोग करें। fclose() इस बफर को फ्लश करता है और फिर ओएस स्तर पर फ़ाइल डिस्क्रिप्टर को बंद करता है। एक फ़ाइल * बंद करें() 'इस आंतरिक बफर को फ्लश नहीं कर सकता है और आप डेटा खो सकते हैं। तो सी धाराओं के लिए हमेशा सी fxxx() कार्यों का उपयोग करें। –