2010-01-13 5 views
9

के साथ लिनक्स में फ़ाइलों को लॉक करना मुझे आश्चर्य है कि क्या आप कर सकते हैं: लिनक्स में फ़ाइल में केवल एक पंक्ति या एक वर्ण को लॉक करें और बाकी की फाइल अन्य प्रक्रियाओं के लिए सुलभ रहनी चाहिए? मुझे लिनक्स के तहत सी/सी ++ वाली फ़ाइल पर लेनदेन अनुकरण करने के संबंध में एक कार्य प्राप्त हुआ। कृपया मुझे एक उत्तर दें और यदि यह उत्तर हाँ है, तो मुझे कुछ लिंक दें जहां से मैं यह कार्य करने के लिए एक झलक ले सकता हूं।सी/सी ++

धन्यवाद, Madicemickael

+0

स्थिति x से स्थिति y (x

+1

जब तक आप ओपी नहीं हैं, कृपया प्रश्नों को "होमवर्क" के रूप में टैग न करें, ऐसा करने के कारण केवल आपके हिस्से पर एक राय हो सकती है। अगर आपको लगता है कि सवाल बंद होना चाहिए, तो बस इसे बंद करने के लिए वोट दें। –

उत्तर

11

हां, यह संभव है।

ऐसा करने के लिए यूनिक्स तरीका fcntl या lockf के माध्यम से है। जो भी आप चुनते हैं, केवल इसका उपयोग करना सुनिश्चित करें और दोनों को मिश्रण न करें। इसके बारे में इस प्रश्न (उत्तर के साथ) पर एक नज़र डालें: fcntl, lockf, which is better to use for file locking?

यदि आप कर सकते हैं, तो Advanced Programming in the UNIX Environment में सेक्शन 14.3 पर एक नज़र डालें।

+0

मैंने उन्हें आजमाया है, वे बहुत अच्छे हैं –

3

lockf(3) एक फ़ाइल के एक हिस्से के लिए एक लॉक आवेदन कर सकते हैं।

12

fcntl() एक एपीआई चुनने के लिए है, क्योंकि यह कम से कम टूटा हुआ है और पॉज़िक्स है। यह एकमात्र ऐसा है जो एनएफएस में काम करता है। उन्होंने कहा कि यह एक पूरी आपदा भी है, क्योंकि ताले प्रक्रियाओं के लिए बाध्य हैं, फाइल डिस्क्रिप्टर नहीं। इसका मतलब है कि यदि आप एक फ़ाइल लॉक करते हैं और फिर कुछ अन्य थ्रेड या कुछ लाइब्रेरी फ़ंक्शन लॉक/इसे अनलॉक करते हैं, तो आपका लॉक भी टूटा जाएगा। साथ ही, आप एक दूसरे के साथ हस्तक्षेप करने के लिए एक ही प्रक्रिया के दो धागे की रक्षा के लिए फ़ाइल सिस्टम ताले का उपयोग नहीं कर सकते हैं। साथ ही, आपको उन फ़ाइलों पर फ़ाइल लॉक का उपयोग नहीं करना चाहिए जो एक से अधिक उपयोगकर्ताओं तक पहुंच योग्य हैं, क्योंकि यह प्रभावी रूप से उपयोगकर्ताओं को एक-दूसरे की प्रक्रियाओं को स्थिर करने में सक्षम बनाता है।

संक्षेप में: यूनिक्स पर फ़ाइल लॉकिंग से हल होने से अधिक समस्याएं उत्पन्न होती हैं। इसका उपयोग करने से पहले आपको वास्तव में होना चाहिए कि आप पूरी तरह से अर्थशास्त्र को समझें।

+1

भले ही फ़ाइल लॉक प्रक्रियाओं के लिए बाध्य हैं, आप यह सुनिश्चित करने के लिए अपने थ्रेडेड एप्लिकेशन में एक म्यूटेक्स का उपयोग कर सकते हैं कि एक थ्रेड किसी अन्य द्वारा बनाए गए लॉक को जारी नहीं करता है। –

संबंधित मुद्दे