Taille de pid t, uid t, gid t sous Linux

sur les systèmes Linux (32 ou 64 bits), Quelle est la taille de pid_t,uid_t et gid_t?

30
demandé sur Joe Shaw 2009-12-17 19:01:12

3 réponses

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

EDIT: par requête populaire (et parce que, de façon réaliste, 99% des personnes qui viennent à cette question vont lancer x86 ou x86_64)...

= 3.0.0, la réponse est:

pid_t: 4
uid_t: 4
gid_t: 4
53
répondu Dave 2015-11-04 14:33:49

sur les architectures intel, les tailles sont définies en /usr/include/bits/typesizes.h:

#define __UID_T_TYPE            __U32_TYPE
#define __GID_T_TYPE            __U32_TYPE
#define __PID_T_TYPE            __S32_TYPE

En d'autres termes, uid_t et gid_t sont des entiers 32 bits non signés et pid_t est un entier 32 bits signé. Cela s'applique à la fois aux 32 bits et aux 64 bits.

Je ne suis pas sûr de ce qu'ils sont sur d'autres architectures car je n'en ai aucune disponible pour le moment, mais la manière définitive est de compiler un programme qui imprime la sortie de sizeof(uid_t), etc.

18
répondu Joe Shaw 2009-12-17 16:50:38

standard définit pid_t comme un "type entier signé" et uid_t et gid_t simplement comme des "types entiers" (donc le code portable ne devrait pas supposer un type particulier pour eux).

12
répondu Steve Emmerson 2013-10-09 21:41:37