Linux上pid_t,uid_t,gid_t的大小

在Linux系统(32位或64位)上, pid_tuid_tgid_t的大小是多less?

 #include <stdio.h> #include <sys/types.h> int main() { printf("pid_t: %zu\n", sizeof(pid_t)); printf("uid_t: %zu\n", sizeof(uid_t)); printf("gid_t: %zu\n", sizeof(gid_t)); } 

编辑:每个流行的请求(因为,实际上,99%的人来这个问题将运行x86或x86_64)…

在运行Linux> = 3.0.0的i686和x86_64(32位和64位)处理器上,答案是:

 pid_t: 4 uid_t: 4 gid_t: 4 

在intel架构上,大小在/usr/include/bits/typesizes.h中定义:

 #define __UID_T_TYPE __U32_TYPE #define __GID_T_TYPE __U32_TYPE #define __PID_T_TYPE __S32_TYPE 

换句话说, uid_tgid_t是无符号的32位整数,而pid_t是有符号的32位整数。 这适用于32位和64位。

我不确定他们是否在其他架构上,因为我目前还没有任何可用的架构,但最终的方法是编译一个打印sizeof(uid_t)的输出的程序。

该标准将pid_t定义为“有符号整数类型”, uid_tgid_t仅仅是“整数类型”(因此便携式代码不应该为其设置任何特定类型)。