41

Linuxシステム(32ビットまたは64ビット)の場合、、、およびのサイズはどれくらいpid_tですuid_tgid_t

4

3 に答える 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

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 ビット整数であり、 は符号付き 32pid_tビット整数です。これは、32 ビットと 64 ビットの両方に適用されます。

現時点では利用できるものがないため、他のアーキテクチャでそれらが何であるかはわかりませんが、決定的な方法はsizeof(uid_t)、などの出力を出力するプログラムをコンパイルすることです.

于 2009-12-17T16:02:44.897 に答える
15

標準pid_tでは、「符号付き整数型」として定義されておりuid_t、単に「整数型」として定義されていますgid_t(したがって、移植可能なコードは、特定の型を想定すべきではありません)。

于 2009-12-19T03:15:31.803 に答える