我剛剛看了一下mode_t,它主要存儲以下信息:文件類型(S_IFREG,S_IFDIR,S_IFCHR,S_ISBLK,S_ISFIFO,S_ISLINK,S_ISSOCK) 爲什麼mode_t使用4個字節?
- 7布爾值3 = 9訪問權限的布爾值(讀,寫,執行所有者,組和其他)
所以它需要16位= 2個字節。我猜你的文件類型可能會少一點,因爲它必須是普通文件,目錄,字符或塊設備,套接字,符號鏈接或管道。或者其他文件類型是否存在?
所以我剛剛檢查mode_t的大小與
printf("Size: %d byte\n", sizeof(mode_t));
它使用4個字節。爲什麼它使用4個字節?有沒有我沒注意到的其他信息?
編輯: 我剛發現mode_t在ptypes.inc定義:
type mode_t = cuint32;
cuint32是一個32個比特的尺寸,無符號整數,在ctypes.inc定義:
type cuint32 = LongWord;
也許這有助於答案。
如果將來需要添加更多選項/標誌等,該怎麼辦? – Nim 2012-03-07 13:50:31
這可能是因爲它只是從一個'int'中定義的類型,這在大多數體系結構中都是32位。或者它變得更大,因此它可以適應未來的標誌。 – 2012-03-07 13:50:48
你** ** INT型_may_爲4個字節,即使你在它存儲的號碼「255」 ...... 的「積木」,是處理器架構,而且你對他們將任何其他標誌一些自由空間需要。 OMG我恨bitflags! – 2012-03-07 13:51:00