Sur les systèmes Linux (32 ou 64 bits), quelle est la taille de pid_t
, uid_t
, et gid_t
?
#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 demande populaire (et parce que, de façon réaliste, 99% des personnes qui viendront à cette question utiliseront x86 ou x86_64) ...
Sur un processeur i686 et x86_64 (donc, 32 bits et 64 bits) exécutant Linux> = 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 dans /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 vaut pour les 32 et 64 bits.
Je ne sais pas trop ce qu'elles sont sur d'autres architectures car je n'en ai pas pour le moment, mais le moyen définitif est de compiler un programme qui imprime la sortie de sizeof(uid_t)
, etc.
standard définit pid_t
comme "type entier signé" et uid_t
et gid_t
simplement en tant que "types entiers" (donc le code portable ne devrait pas supposer de type particulier pour eux).