लिनक्स (और अन्य यूनिक्स) एक फ़ाइल ( लिंक ) के नाम के बीच एक अंतर खींचता है , फ़ाइल खुद (अक्सर इनोड के साथ पहचानी जाती है ), और फ़ाइल के लिए खुले हैंडल। जब आप किसी फ़ाइल को हटाने के लिए जाते हैं, तो आप कॉल को कॉल करते हैं - यह फ़ाइल के लिंक को मिटा देता है (आप इसे एक अलग इनोड के साथ अधिलेखित करने के लिए भी उपयोग कर सकते हैं )। हालाँकि, अगर फ़ाइल को खुले हैंडल (या अन्य लिंक - फ़ाइलों में कई हार्डलिंक हो सकते हैं ) रहते हैं, तो इनोड रहता है, और फ़ाइल सामग्री तब तक रहती है, जब तक कि सभी लिंक और हैंडल चले नहीं जाते।unlink()
rename()
इसलिए लाइब्रेरी का उपयोग करके प्रोग्राम चलाना या जो भी हो पुराने संस्करण को संभाल कर रखें (अक्सर मेमोरी मैपिंग के माध्यम से), इसलिए यह डिस्क पर रहता है। इसका अभी कोई फ़ाइल नाम नहीं है, और इसे तब साफ किया जाएगा जब सभी प्रोग्राम इसे बंद कर (या अगले रिबूट पर, फाइलसिस्टम चेक या जर्नल रीप्ले के दौरान)।
इसके अलावा, ध्यान दें कि 'पुराने पुस्तकालय' की अपेक्षा करने वाले कार्यक्रम पुस्तकालय के नए संस्करणों के साथ ठीक काम करेंगे। लिनक्स पुस्तकालयों को एक फ़ाइलनाम ('सोनमे') सौंपा गया है जो पुस्तकालय द्वारा प्रस्तुत एबीआई (एप्लीकेशन बाइनरी इंटरफेस) के संस्करण को दर्शाता है। उदाहरण के लिए, मेरे सिस्टम पर C लाइब्रेरी है libc.so.6
। कोई भी प्रोग्राम libc के पुराने संस्करण के विरुद्ध संकलित किया गया है, लेकिन फिर भी 6 ABI के संस्करण को लागू करने वाले libc का एक संस्करण, इसके साथ ठीक काम करेगा। वास्तव में पुराने प्रोग्राम एक के लिए दिखेगा libc.so.5
या libc.so.4
या कुछ और के बजाय; इस मामले में, आपको पुराने संस्करण को भी अपने पास रखना होगा - लेकिन चूंकि फ़ाइल नाम अलग है, इसलिए यह कोई समस्या नहीं है।