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
?
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
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.
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).