Подтвердить что ты не робот

Размер pid_t, uid_t, gid_t в Linux

В системах Linux (32- или 64-разрядных), каков размер pid_t, uid_t и gid_t?

4b9b3361

Ответ 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) и т.д.