मैं सिर्फ mode_t के बारे में पढ़ा है कि यह मूल रूप से निम्नलिखित जानकारी संग्रहीत करता है: फ़ाइल प्रकार (S_IFREG, S_IFDIR, S_IFCHR, S_ISBLK, S_ISFIFO, S_ISLINK, S_ISSOCK) मोड_ट 4 बाइट का उपयोग क्यों करता है?
- 7 बूलियन मूल्यों एक्सेस permissons के लिए 3 = 9 बूलियन मान (मालिक, समूह और अन्य के लिए पढ़ें, लिखें और निष्पादित करें)
इसलिए इसे 16 बिट = 2 बाइट की आवश्यकता है। मुझे लगता है कि आप फ़ाइल प्रकार के लिए भी थोड़ा कम हो सकते हैं, क्योंकि यह या तो एक नियमित फ़ाइल, एक निर्देशिका, एक चरित्र या ब्लॉक डिवाइस, एक सॉकेट, एक प्रतीकात्मक लिंक, या एक पाइप होना चाहिए। या अन्य फाइल प्रकार मौजूद हैं?
तो मैं सिर्फ
printf("Size: %d byte\n", sizeof(mode_t));
साथ mode_t के आकार की जाँच की यह 4 बाइट का उपयोग करता है। यह 4 बाइट का उपयोग क्यों करता है? क्या कोई अतिरिक्त जानकारी है जिसे मैंने नोटिस नहीं किया है?
संपादित करें: मैं सिर्फ पाया है कि mode_t ptypes.inc में परिभाषित किया गया है:
type mode_t = cuint32;
cuint32 एक 32 बिट आकार है, अहस्ताक्षरित पूर्णांक और ctypes.inc में परिभाषित:
type cuint32 = LongWord;
शायद यह उत्तर के लिए मदद करता है।
क्या होगा अगर भविष्य में अधिक विकल्प/झंडे इत्यादि जोड़े जाएंगे? – Nim
यह हो सकता है कि यह केवल 'int' से टाइप किया गया हो, जो अधिकांश आर्किटेक्चर में 32 बिट्स है। या यह बड़ा हो गया है ताकि यह भविष्य के झंडे को फिट कर सके। –
आपका ** int ** टाइप _may_ 4 बाइट्स हो, भले ही आप इसे "255" संख्या में संग्रहीत करते हैं ... "बिल्डिंग ब्लॉक" प्रोसेसर आर्किटेक्चर है और इसके अलावा आपके पास किसी अन्य ध्वज के लिए कुछ खाली स्थान है जरुरत। ओएमजी मैं बिटफ्लैग से नफरत करता हूं !!! –