在Linux系统(32位或64位)上, pid_t
, uid_t
和gid_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_t
和gid_t
是无符号的32位整数,而pid_t
是有符号的32位整数。 这适用于32位和64位。
我不确定他们是否在其他架构上,因为我目前还没有任何可用的架构,但最终的方法是编译一个打印sizeof(uid_t)
的输出的程序。
该标准将pid_t
定义为“有符号整数类型”, uid_t
和gid_t
仅仅是“整数类型”(因此便携式代码不应该为其设置任何特定类型)。