फ़ाइल में करने के लिए आवश्यक है?
मैं इसे कभी नहीं करता क्योंकि मैं फ़ाइल को कॉल करता हूं। बंद करो, और मुझे लगता है कि यह स्वचालित रूप से फ़्लश हो गया है, है ना?गो में फ़ाइल को फ़्लश करने के लिए कब?
उत्तर
आप देखेंगे कि एक os.File में कोई नहीं है। फ्लश() क्योंकि इसे किसी की आवश्यकता नहीं है क्योंकि यह buffered नहीं है। इसे लिखने के लिए फ़ाइल को लिखने के लिए सीधा सिस्कोल हैं।
जब आपका प्रोग्राम निकलता है (भले ही यह दुर्घटनाग्रस्त हो) तो सभी फाइलें जो इसे खोलती हैं, ऑपरेटिंग सिस्टम द्वारा स्वचालित रूप से बंद हो जाएंगी और फाइल सिस्टम आपके परिवर्तनों को डिस्क पर लिखने पर लिख देगा (कभी-कभी कुछ मिनट बाद आपका कार्यक्रम निकलता है)।
कॉलिंग os.File.Sync() fsync() syscall को कॉल करेगा जो फ़ाइल सिस्टम को डिस्क पर अपने बफर को फ्लश करने के लिए मजबूर करेगा। यह गारंटी देगा कि आपका डेटा डिस्क पर और लगातार है, भले ही सिस्टम चालू हो या ऑपरेटिंग सिस्टम क्रैश हो।
आप .Sync कॉल करने के लिए की जरूरत नहीं है()
यह उत्तर 'fflyn' के साथ' fsync' को भ्रमित करता है। आपको एक unbuffered फ़ाइल _flush_ करने की आवश्यकता नहीं है। इसका मतलब यह नहीं है कि अगर आपको गारंटी है कि लेखन डिस्क पर प्रतिबद्ध है तो आपको _sync_ की आवश्यकता नहीं है। Piotr Praszmo का जवाब बेहतर है। –
जब आप जितना संभव हो सके डेटा अखंडता सुनिश्चित करना चाहते हैं। उदाहरण के लिए, फ़ाइल बंद करने से पहले आपका प्रोग्राम क्रैश होने पर क्या होता है?
here देखें। File.Sync()
fsync पर syscall है। आपको उस नाम के तहत और अधिक ढूंढने में सक्षम होना चाहिए।
ध्यान रखें कि fsync
fflush जैसा नहीं है और इसे बंद करने से पहले निष्पादित नहीं किया गया है।
आपको आमतौर पर इसे कॉल करने की आवश्यकता नहीं है। फ़ाइल को किसी भी समय डिस्क पर लिखा जाएगा, कुछ समय बाद और यदि इस अवधि के दौरान कोई बिजली विफलता नहीं है।
"आपको आम तौर पर इसे कॉल करने की आवश्यकता नहीं है" जो केवल तभी सच है यदि आप एम्बेडेड डिवाइस पर काम नहीं कर रहे हैं, जहां कोई भी आपकी बिजली आपूर्ति को किसी भी समय डिस्कनेक्ट करने का निर्णय ले सकता है। – Joppe
समस्या केवल एम्बेडेड डिवाइस तक ही सीमित नहीं है। हमेशा एक जोखिम है कि असंसमित लेखन फाइल सिस्टम के इन-मेमोरी बफर के साथ मर जाते हैं, लेकिन आधुनिक पत्रिकाओं वाली फाइल सिस्टम के साथ, वह खिड़की गायब हो जाती है। कुछ बैटरी समर्थित हार्डवेयर स्थिरता को और भी बेहतर बना सकते हैं। 'सिंक' कार्यक्रम को और अधिक जागरूक करने का तरीका है कि अंतर्निहित भंडारण अद्यतित है। –
लग रहा है यहाँ सबसे सिफारिशों fsync कॉल करने के लिए नहीं करने के लिए() हैं, लेकिन सामान्य रूप में यह मुख्य रूप से अपने आवेदन की आवश्यकता पर निर्भर करता है। यदि आप महत्वपूर्ण फ़ाइल पढ़ने/लिखने पर काम कर रहे हैं, तो इसे हमेशा fsync() को कॉल करने की अनुशंसा की जाती है।
http://www.microhowto.info/howto/atomically_rewrite_the_content_of_a_file.html#idp31936
लिंक, जब file.Sync() में मदद मिलेगी बारे में अधिक जानकारी नहीं है।
- 1. जावा में System.out.flush() को कॉल करने के लिए कब/क्यों
- 2. गो में कचरा संग्रह को कम करने के लिए कैसे?
- 3. Node.js फ़ाइल को फ़्लश करने के लिए कैसे लिखें ठीक है?
- 4. super.onPause() को कॉल करने के लिए कब?
- 5. GetHashCode() को ओवरराइड करने के लिए कब?
- 6. लिनक्स टर्मिनल को कॉल करने के लिए जावा का उपयोग करना: आउटपुट को कैसे फ़्लश करें?
- 7. कोड/मॉड्यूल में कोड को विभाजित करने के लिए कब?
- 8. गो में [] बाइट या स्ट्रिंग का उपयोग कब करें?
- 9. गो
- 10. Fmt.Scanf() में जाने के बाद Stdin कैसे फ़्लश करें?
- 11. एक सीपीयू कैश लाइन लिखने के बाद स्मृति में फ़्लश कब होती है?
- 12. गो में फ़ंक्शन ओवरलोडिंग के लिए वैकल्पिक?
- 13. गो
- 14. गो
- 15. गो
- 16. गो
- 17. गो
- 18. गो पार्स खुद का उपयोग करने के लिए जाते हैं?
- 19. गो
- 20. गो
- 21. गो
- 22. गो
- 23. कब प्राप्त करने के लिए जब PowerPermanentIDsForObjects :?
- 24. गो
- 25. गो
- 26. गो
- 27. गो
- 28. टिप्पणी करने के लिए कोड (अन्य "कब")
- 29. गो के विधि सिंटैक्स के लिए तर्क
- 30. गो
कोई इसे बंद करना क्यों चाहता था? एक टिप्पणी कृपया? –
आपको क्या लगता है कि .lose() स्वचालित रूप से बाइट्स को स्टोरेज में फ़्लश करता है? [बंद करने का स्रोत यह इंगित नहीं करता है] (https://golang.org/src/os/file_unix.go?s=5591:5619#L179) - क्या मुझे कुछ याद आ रही है? –