让我们逐步查找一下。
首先从文件 /usr/include/sys/stat.h 中找到 mode_t 类型
/usr/include/sys/stat.h -> typedef __mode_t mode_t;
说明 mode_t 只是对 __mode_t 的一种定义。
然后从 /usr/include/bits/types.h 中找到 __mode_t 类型
/usr/include/bits/types.h -> __STD_TYPE __MODE_T_TYPE __mode_t;
说明 __mode_t 也只是对 __MODE_T_TYPE 的一种定义。
/usr/include/bits/typesizes.h -> #define __MODE_T_TYPE __U32_TYPE
说明 __MODE_T_TYPE 是对 __U32_TYPE 的一种定义。
/usr/include/bits/types.h -> #define __U32_TYPE unsigned int
最后 __U32_TYPE 是一种无符号的整数的定义。
从上述推导可以看出,mode_t 实际上也就是一种无符号整数。
另外如下结构 struct stat 定义中的 st_mode 成员变量也是使用的 mode_t 类型的变量。
从 man 2 stat 中可以找到结构 struct stat 的定义,如下:
struct stat { }; |