在Linux系统(32位或64位)上,pid_t
,uid_t
和gid_t
的大小是多少?
答案 0 :(得分:58)
#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&gt; = 3.0.0的i686和x86_64(32位和64位)处理器上,答案是:
pid_t: 4
uid_t: 4
gid_t: 4
答案 1 :(得分:22)
在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)
等的输出的程序
答案 2 :(得分:13)
standard将pid_t
定义为“有符号整数类型”,将uid_t
和gid_t
定义为“整数类型”(因此,可移植代码不应假设任何特定为他们输入。)