web-dev-qa-db-ja.com

Linuxでのpid_t、uid_t、gid_tのサイズ

Linuxシステム(32ビットまたは64ビット)で、pid_tuid_t、およびgid_t

34
Joe Shaw
#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));
}

編集:人気のあるリクエストあたり.

Linux> = 3.0.0を実行しているi686およびx86_64(つまり、32ビットおよび64ビット)プロセッサーでは、答えは次のとおりです。

pid_t: 4
uid_t: 4
gid_t: 4
60
Dave

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)などの出力を出力するプログラムをコンパイルすることです.

22
Joe Shaw

標準 は、pid_tを「符号付き整数型」として定義し、uid_tおよびgid_tを単に「整数型」として定義します(したがって、移植可能なコードは、特定のそれらのために入力してください)。

13
Steve Emmerson