पारंपरिक रूप से डिज़ाइन की गई UNIX फाइल सिस्टम पर कोई भी फाइल जिसकी संदर्भ संख्या (जैसे हार्डलिंक गणना का योग और ओपन फाइल हैंडल की संख्या *) 0 तक पहुंच जाती है, हटा दी जाती है। हालांकि, आधुनिक यूनिक्स प्रणालियों पर, rmdir
सिस्टम कॉल हटाने .
और ..
एक-एक करने के बजाय एक एकल ऑपरेशन में एक खाली निर्देशिका को हटा देता है ।
ऐतिहासिक यूनिक्स प्रणालियों में, हालांकि, यह सिस्टम कॉल मौजूद नहीं था। इसके बजाय, rmdir
आदेश एक setuid कार्यक्रम था ( स्रोत कोड यहां पाया जा सकता है), जो जाँच की है कि एक निर्देशिका खाली (विशेष प्रविष्टियों को छोड़कर) था, और फिर हटा दिया ..
और .
उस क्रम में, है, और फिर निर्देशिका ही है, साथ निकाले गए सभी unlink
सिस्टम कॉल जो केवल रूट को निर्देशिकाओं पर उपयोग करने की अनुमति थी (इसलिए कमांड को सेट क्यों किया गया था)। इसलिए, उन सिस्टमों पर, निर्देशिका की लिंक संख्या को क्षण भर बाद 1 .
हटा दिया जाएगा, लेकिन पहले निर्देशिका को निर्देशिका निर्देशिका से हटा दिया गया था, तब यह 0 होगी।
rm
आदेश, संयोग से, निर्देशिका हटाने से भी जड़ को रोका। और अपनी सामग्री को खाली करने के बाद निर्देशिकाओं को हटाने के rm -r
लिए rmdir
कमांड को कॉल करेगा ।
इन ऐतिहासिक सिस्टम पर, का दुरुपयोग unlink
एक कार्यक्रम से कॉल, रूट के रूप में चल रहा है के साथ एक रेस स्थिति में चल रहा है rmdir
या mv
, या एक प्रक्रिया है जिसका वर्तमान निर्देशिका (आधुनिक प्रणालियों इसे रोकने) हटा दिया गया है में एक फ़ाइल बनाने, फाइल या निर्देशिका झूलते में परिणाम सकता है जिसकी हार्डलाइन संख्या 0 से ऊपर है, लेकिन निर्देशिका ट्री में मौजूद नहीं है। इस स्थिति का पता लगाया गया था dcheck
, और अभी भी जाँच में fsck
से एक है क्योंकि यह अधिकांश फाइल सिस्टम पर शारीरिक रूप से संभव है।
फ़ाइल सिस्टम, संयोग से, (सहित निर्देशिका को लागू करने की आवश्यकता नहीं है .
और ..
है कि hardlinks सामान्य फ़ाइलें)। इन filesystems पर, एक निर्देशिका की हार्डलिंक गणना हमेशा रिपोर्ट की जाएगी 0
(लेकिन निश्चित रूप से, मूल निर्देशिका के भीतर इसका अस्तित्व 1 के "संदर्भ गणना" के लिए योग्य है)।
हटाए गए निर्देशिका का व्यवहार (जैसे जब एक प्रक्रिया द्वारा जांच की जाती है जो पहले से ही खुला है या इसकी वर्तमान निर्देशिका के रूप में है) और एक निर्देशिका की "लिंक गणना" का सटीक अर्थ अनिर्दिष्ट है। उदाहरण के लिए, मैक ओएस एक्स पर, यह 2 की हार्डलिंक गणना की रिपोर्ट करेगा , भले ही इसमें कोई वास्तविक हार्डलिंक न हो। हालांकि .
और ..
सूची में दिखाई नहीं देते, निर्देशिका खोला जा सकता है और stat
नाम के साथ कहा जा सकता है .
या ..
। लिनक्स पर, लिंक गणना 0 है, लेकिन .
और ..
काम वैसे ही अभी भी।
मैक ओएस एक्स भी एक निर्देशिका में सभी फाइलों की संख्या को लिंक संख्या के रूप में रिपोर्ट करता है , बजाय उपनिर्देशिकाओं की संख्या के। लेकिन यह 2 भी है .
और जब ..
चले गए हैं।
* इसमें सामान्य ओपन डिस्क्रिप्टर, मेमोरी-मैप्ड सेक्शन (उदाहरण के लिए बायनेरी और शेयर्ड लाइब्रेरीज़ को शामिल करना) और वर्तमान निर्देशिकाओं को प्रोसेस करना शामिल है।
..
, केवल जब यह एक उपनिर्देशिका होती है, तो सही? तो..
हमेशा एक निर्देशिका के लिए मौजूद नहीं है, है ना?