В системах Linux (32- или 64-разрядных), каков размер pid_t
, uid_t
и gid_t
?
Размер pid_t, uid_t, gid_t в Linux
Ответ 1
#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: В популярном запросе (и потому, что 99% людей, приходящих на этот вопрос, будут запускать x86 или x86_64)...
На процессоре i686 и x86_64 (так, 32-разрядный и 64-разрядный), работающем под Linux >= 3.0.0, ответ:
pid_t: 4
uid_t: 4
gid_t: 4
Ответ 2
В архитектуре 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)
и т.д.