在 Linux 系统(32 位或 64 位)上pid_t
,uid_t
、 和的大小是gid_t
多少?
问问题
77199 次
3 回答
68
#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
于 2009-12-17T16:21:04.017 回答
23
在英特尔架构上,大小定义在/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
andgid_t
是无符号的 32 位整数,并且pid_t
是有符号的 32 位整数。这适用于 32 位和 64 位。
我不确定它们在其他架构上是什么,因为我目前没有任何可用的,但最终的方法是编译一个打印输出sizeof(uid_t)
等的程序。
于 2009-12-17T16:02:44.897 回答
15
该标准定义pid_t
为“有符号整数类型”uid_t
并且gid_t
仅定义为“整数类型”(因此可移植代码不应为它们假定任何特定类型)。
于 2009-12-19T03:15:31.803 回答