我刚刚看了一下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