पर पहुंच (पढ़ने और लिखने) से इनकार करने का तरीका कैसे है I fstream के साथ खोलने वाली फ़ाइल तक पहुंच से इनकार कैसे कर सकता हूं? जब मैं fstream के साथ इसे पढ़ रहा/लिख रहा हूं, तो मैं फ़ाइल तक पहुंच में असमर्थ होना चाहता हूं?std का उपयोग करना: fstream फ़ाइल को
उत्तर
आप इसे मानक fstream के साथ नहीं कर सकते हैं, आपको प्लेटफॉर्म विशिष्ट कार्यों का उपयोग करना होगा।
विंडोज पर, आप CreateFile() या LockFileEx() का उपयोग कर सकते हैं। लिनक्स पर, flock(), lockf(), और fcntl() (जैसा कि पिछले टिप्पणीकर्ता ने कहा था)।
यदि आप एमएसवीसी का उपयोग कर रहे हैं, तो आप fstream के कन्स्ट्रक्टर को तीसरा पैरामीटर पास कर सकते हैं। Visual Studio 6 या newer versions के लिए प्रलेखन देखें। बेशक यह अन्य कंपाइलरों और प्लेटफार्मों के साथ काम नहीं करेगा।
आप दूसरों को किसी भी तरह से क्यों लॉक करना चाहते हैं? एक बेहतर समाधान हो सकता है ...
[यह थ्रेड] (http: // stackoverflow।कॉम/प्रश्न/44350 9 1/sh-none-is-not-a-member-of-stdbasic-filebuf-elem-traits/4435481 # 4435481) 'fstream' का उपयोग करने के बारे में अधिक जानकारी प्रदान करता है) – Casebash
देशी सी ++ में ऐसा करने का कोई तरीका नहीं है, क्योंकि यह अत्यधिक प्लेटफार्म निर्भर होगा। लिनक्स/यूनिक्स पर, आप इसे flock
या fcntl
के साथ कर सकते हैं। मुझे सच में यकीन नहीं है कि विंडोज़ पर इसे कैसे किया जाए।
विंडोज़ पर, ऐसा लगता है कि आपको कुछ झंडे CreatFile
पर पास करना होगा या LockFileEx
(जो बाइट रेंज लॉकिंग की अनुमति देता है) का उपयोग करें।
ध्यान दें कि, ये सभी विधियां अंतर्निहित ओएस फ़ाइल डिस्क्रिप्टर/हैंडल पर काम करती हैं, fstream
एस के साथ नहीं। आपको या तो फ़ाइल से पढ़ने/लिखने के लिए पॉज़िक्स या विंडोज एपीआई का उपयोग करने की आवश्यकता होगी, या फ़ाइल डिस्क्रिप्टर/हैंडल को fstream
में लपेटें। यह मंच फिर से निर्भर है। मुझे यकीन है कि ऐसा करने का एक तरीका है, लेकिन मुझे इसे अपने सिर के ऊपर से याद नहीं है।
Boos Interprocess मॉड्यूल का उपयोग करके, file lock कार्यक्षमता है।
फ़ाइल को लॉक करें, इसे खोलें, पढ़ें और/या उससे लिखें, इसे बंद करें, इसे अनलॉक करें।
Casebash द्वारा टिप्पणी पर विस्तार:
खिड़कियों में एक फ़ाइल खोलने के लिए इतना है कि अन्य प्रक्रियाओं यह
file.rdbuf()->open(path, std::ios_base::app, _SH_DENYWR);
_SH_DENYRW उपयोग करने के लिए
- 1. std :: fstream फ़ाइल नहीं बनाता
- 2. एक std :: fstream
- 3. Fstream नई फ़ाइल
- 4. फ़ाइल बनाम fstream
- 5. std :: fstream फाइलें 2 जीबी से अधिक
- 6. Std :: move का उपयोग करना
- 7. std :: fstream कक्षाएं std :: string क्यों नहीं लेती हैं?
- 8. fstream
- 9. क्या मुझे std :: fstream को बंद करने की आवश्यकता है?
- 10. प्राप्त कर रहा है फ़ाइल वर्णनकर्ता :: fstream
- 11. std :: fstream के साथ टेक्स्ट फ़ाइल पढ़ने पर मैं गैर-डिफ़ॉल्ट डिलीमीटर का उपयोग कैसे कर सकता हूं?
- 12. बूस्ट का उपयोग करना :: std :: random_shuffle
- 13. जहां नामस्थान std का उपयोग करना है;
- 14. एक यूनिकोड फ़ाइल नाम के साथ std :: fstream (ऑफस्ट्रीम या ifstream) कैसे खोलें?
- 15. fstream पढ़ने/लिखने की चाल फ़ाइल सूचक
- 16. std :: context_wrapper का उपयोग std :: map
- 17. std :: fstream ने EOF बिट को जिस तरह से सेट किया है?
- 18. मैं std :: ifstreams का std :: स्टैक क्यों नहीं बना सकता?
- 19. कैसे asio साथ std :: स्ट्रिंग का उपयोग करना :: बफर()
- 20. सीधे सी ++ std में पढ़ा() का उपयोग करना: वेक्टर
- 21. सी # में देशी सी ++ कोड का उपयोग करना - std :: vector
- 22. मुझे फ़ाइल को
- 23. fstream fstream के साथ फ़ाइल में कैसे संलग्न करें :: ऐप ध्वज काम नहीं करता है
- 24. सी ++ क्या मैं कई फ़ाइलों को खोलने और लिखने के लिए fstream का पुन: उपयोग कर सकता हूं?
- 25. छवि का उपयोग करना। FromFile फ़ाइल
- 26. फ़ाइल को खोले जाने पर निर्भर करता है कि ('fstream ऑब्जेक्ट') सही या गलत का मूल्य वापस कैसे करता है?
- 27. आरसीपीपी :: CharacterVector को std :: string
- 28. क्या मुझे cdors/असाइनमेंट ऑपरेटरों में std :: move या std :: आगे का उपयोग करना चाहिए?
- 29. क्या std :: min के साथ std :: accumulate का उपयोग करना संभव है?
- 30. std :: का उपयोग कर std :: सूचियों छँटाई तरह
इनकार दोनों पढ़ने और लिखने होगा पहुँच नहीं लिख सकते हैं मुझे फ़ाइल से पढ़ने और सामग्री के अनुसार लाइनों को बदलने की जरूरत है। मैं फ़ाइल में बदलावों से बचना चाहता हूं, जबकि मैं इसे पढ़ रहा हूं और लिख रहा हूं (नवीनतम डेटा है और ओवरराइड नहीं है) मैंने इसे fstream का उपयोग करके प्रत्यारोपित किया है, क्या मुझे हैंडल और बफर (रीडफाइल) का उपयोग करने के लिए पूरे कोड को बदलने की ज़रूरत है। या मैं fstream से एक हैंडल प्राप्त कर सकते हैं? मुझे readfile और writefile में परेशानी थी क्योंकि मुझे लाइन से लाइन पढ़ने और लिखने की आवश्यकता है। (Fstream साथ मैं getline फ़ंक्शन का उपयोग किया fstream FS (पथ) जबकि (file.eof()) \t getline (एफएस, लाइन);।! कुछ करना ... fs.write (str, str.size ()); fs.clear(); fs.close(); – sofr
क्या आप अपनी फ़ाइल को अपने प्रोग्राम के किसी अन्य उदाहरण से या किसी अन्य प्रोग्राम से सुरक्षित रखना चाहते हैं? सबसे पहले, लॉक फ़ाइलों का उपयोग करना एक आसान समाधान है/निर्देशिकाएं - अधिकांश कार्यक्रम इसे इस तरह से करते हैं। दूसरे के लिए, मैंने इसे कभी नहीं देखा है - अगर आपको वास्तव में इसकी आवश्यकता है, तो मेरा उत्तर देखें। – Hali