Linux上的pid_t,uid_t,gid_t的大小

时间:2009-12-17 16:01:13

标签: c linux 64-bit 32-bit sizeof

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

3 个答案:

答案 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_tgid_t是无符号的32位整数,pid_t是带符号的32位整数。这适用于32位和64位。

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

答案 2 :(得分:13)

standardpid_t定义为“有符号整数类型”,将uid_tgid_t定义为“整数类型”(因此,可移植代码不应假设任何特定为他们输入。)