यदि किसी फ़ाइल में निष्पादित कोड लॉक किया जाना चाहिए या नहीं, तो एक डिज़ाइन निर्णय है और एमएस ने बस लॉक करने का निर्णय लिया है, क्योंकि इसमें अभ्यास में स्पष्ट फायदे हैं: इस तरह आपको यह जानने की आवश्यकता नहीं है कि किस संस्करण में संस्करण का उपयोग किया जाता है किस आवेदन से। लिनक्स डिफ़ॉल्ट व्यवहार के साथ यह एक बड़ी समस्या है, जिसे अधिकांश लोगों द्वारा आसानी से अनदेखा किया जाता है। यदि सिस्टम वाइड लिब को प्रतिस्थापित किया गया है, तो आप आसानी से नहीं जान सकते कि कौन से ऐप्स इस तरह के libs के कोड का उपयोग करते हैं, अधिकतर बार आपको सबसे अच्छा मिल सकता है कि पैकेज प्रबंधक उन libs के कुछ उपयोगकर्ताओं को जानता है और उन्हें पुनरारंभ करता है। लेकिन यह केवल सामान्य और अच्छी तरह से चीजों के बारे में जानता है जैसे पोस्टग्रेस और इसकी libs या ऐसे। अधिक दिलचस्प परिदृश्य हैं यदि आप कुछ तृतीय पक्ष libs के खिलाफ अपना स्वयं का एप्लिकेशन विकसित करते हैं और उन्हें प्रतिस्थापित किया जाता है, क्योंकि अधिकांश बार पैकेज प्रबंधक आपके ऐप को नहीं जानता है। और यह न केवल देशी सी कोड की समस्या है या ऐसा है, यह लगभग हर चीज के साथ हो सकता है: बस modd के साथ httpd का उपयोग करें और कुछ पर्ल libs पैकेज प्रबंधक का उपयोग करके स्थापित करें और पैकेज प्रबंधक को किसी भी कारण से उन पर्ले libs को अद्यतन करने दें। यह आपके httpd को पुनरारंभ नहीं करेगा, क्योंकि यह निर्भरता को नहीं जानता है। इस तरह के कई उदाहरण हैं, बस इसलिए कि किसी भी फ़ाइल में किसी भी रनटाइम द्वारा स्मृति में उपयोग में कोड शामिल हो सकता है, जावा, पायथन और ऐसी सभी चीजों के बारे में सोचें।
तो राय रखने का एक अच्छा कारण है कि फ़ाइलों को डिफ़ॉल्ट रूप से लॉक करना एक अच्छा विकल्प हो सकता है। हालांकि, आपको उन कारणों से सहमत होने की आवश्यकता नहीं है।
तो एमएस ने क्या किया? उन्होंने बस एक एपीआई बनाया जो कॉलिंग एप्लिकेशन को यह तय करने का मौका देता है कि फाइलों को लॉक किया जाना चाहिए या नहीं, लेकिन उन्होंने फैसला किया कि इस एपीआई का डिफ़ॉल्ट मान पहले कॉलिंग एप्लिकेशन को एक विशेष लॉक प्रदान करना है। CreateFile और इसके dwShareMode
तर्क के आसपास API पर एक नज़र डालें। यही कारण है कि आप कुछ एप्लिकेशन द्वारा उपयोग में फ़ाइलों को हटाने में सक्षम नहीं हो सकते हैं, यह केवल आपके उपयोग के मामले की परवाह नहीं करता है, डिफ़ॉल्ट मानों का उपयोग करता है और इसलिए फ़ाइल के लिए विंडोज द्वारा एक विशेष लॉक प्राप्त होता है।
कृपया उन लोगों पर विश्वास न करें जो आपको विंडोज़ के बारे में कुछ बताते हैं, हैंडल पर रेफ गिनती का उपयोग नहीं करते हैं या हार्डलिंक्स का समर्थन नहीं करते हैं, या यह पूरी तरह गलत है। हैंडल का उपयोग करने वाले लगभग हर एपीआई रेफ गिनती के संबंध में अपना व्यवहार दस्तावेज करता है और आप आसानी से एनटीएफएस के बारे में किसी भी लेख में पढ़ सकते हैं कि यह कार्य में हार्डलिंक्स का समर्थन करता है और हमेशा ऐसा करता है, क्योंकि विंडोज विस्टा के पास सिम्लिंक के लिए भी समर्थन है और हार्डलिंक्स के लिए समर्थन किया गया है read all hard links for a given file और ऐसे में एपीआई प्रदान करके सुधार हुआ।
इसके अतिरिक्त, आप बस फ़ाइल में वर्णन करने के लिए उपयोग की जाने वाली संरचनाओं पर एक नज़र रखना चाहते हैं। NTFS की तुलना में, जो कि बहुत आम है। दोनों एक्सेंट्स की अवधारणा के साथ काम करते हैं, जो डेटा नाम जैसे गुणों से डेटा को अलग करता है, और इनोड्स पुराने के लिए बस एक और नाम है, लेकिन इसकी इसी तरह की अवधारणा है। यहां तक कि विकिपीडिया भी article में दोनों फाइल सिस्टम सूचीबद्ध करता है।
नेट पर अन्य ओएस की तुलना में विंडोज़ में फ़ाइल लॉकिंग के आसपास वास्तव में बहुत सारे एफयूडी हैं, जैसे डीफ्रैग्मेंटेशन की तरह। ;-) इस एफयूडी में से कुछ को Wikipedia पर बस थोड़ा सा पढ़कर बाहर किया जा सकता है।
[व्हाउलॉकएम] (http://www.dr-hoiby.com/WhoLockMe/index.php) नामक एक उपयोगिता है जो एक्सप्लोरर में संदर्भ मेनू में मेनू प्रविष्टि जोड़ती है जो प्रक्रिया (एस) प्रदर्शित कर सकती है किसी दिए गए फ़ाइल को लॉक करना जब आप अजीब फ़ाइल-लॉकिंग त्रुटियां प्राप्त करते हैं तो बेहद उपयोगी। संपादित करें: मुझे पता है कि यह सवाल का जवाब नहीं देता है, लेकिन मैंने सोचा कि यह एक अलग उत्तर वारंट करने के संदर्भ में पर्याप्त उपयोगी था (जैसा कि केवल एक टिप्पणी के लिए विरोध किया गया था)। इस संदर्भ में – JesperE