2015-08-13 3 views
5

आदर्श रूप से, मैं एक निर्देशिका चाहता हूं जो फाइल सिस्टम में दिखाई नहीं दे रहा है और जब यह अंतिम खुली फ़ाइल डिस्क्रिप्टर बंद हो जाती है तो इसे स्वचालित रूप से हटा दिया जाएगा। यह सामग्री केवल openat(), fstatat() के माध्यम से सुलभ हो जाएगा है आदिक्या निर्देशिका के लिए O_TMPFILE के बराबर है?

नियमित फ़ाइलों के लिए, इस व्यवहार open() को O_TMPFILE ध्वज देकर हासिल की है। हालांकि, mkdir() में एक झंडे पैरामीटर नहीं है।

मान लीजिए कि मेरे पास नवीनतम लिनक्स कर्नेल उपलब्ध है, क्या यह संभव है?

+0

संभावित डुप्लिकेट [एक अस्थायी निर्देशिका को सुरक्षित रूप से बनाने के लिए POSIX फ़ंक्शन क्या है?] (Http://stackoverflow.com/questions/12573920/whats-a-posix-function-for-creating-a- समकालीन- निर्देशिका- सुरक्षित रूप से) –

+0

मुझे नहीं लगता कि यह एक डुप्लिकेट है। यह प्रश्न लिनक्स के बारे में है और लिनक्स-विशिष्ट सुविधा के निर्देशिका-आधारित संस्करण के लिए पूछ रहा है; छद्म-डुप्लिकेट temp dirs बनाने के मानकों-अनुरूप तरीकों के बारे में है। –

+0

पॉल: वास्तव में नहीं ... 'mkdtemp() 'मैं अभी उपयोग करता हूं, लेकिन यह अन्य उपयोगकर्ताओं और प्रक्रियाओं के लिए दृश्यमान है और अभी भी मैन्युअल रूप से हटा दिया जाना है। – Benno

उत्तर

2

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

+0

ध्यान दें कि धारणा "निर्देशिकाओं में बिल्कुल एक पथनाम है" सार्वभौमिक रूप से सत्य नहीं है और इस पर भरोसा करना खतरनाक है। कुछ सिस्टम निर्देशिकाओं पर हार्डलिंक्स का समर्थन करते हैं। अन्य सिस्टम (लिनक्स की तरह) आपको एक ही फाइल सिस्टम को दो अलग-अलग पथों पर दो बार घुमाने की अनुमति देता है, जिससे आपको एक ही निर्देशिका में दो सिम्लिंक-मुक्त पथ मिलते हैं। – fuz

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