Rozmiar pid t, uid t, gid T w Linuksie
W systemach Linux (32 - lub 64-bitowych), jaki jest rozmiar pid_t
, uid_t
, i gid_t
?
3 answers
#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: na popularne żądanie (a ponieważ, realistycznie, 99% osób przychodzących na to pytanie będzie działać x86 lub x86_64)...
Na procesorze i686 i x86_64 (czyli 32-bitowym i 64-bitowym) z systemem Linux > = 3.0.0, odpowiedź brzmi:
pid_t: 4
uid_t: 4
gid_t: 4
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-04 14:33:49
Na architekturach Intela, rozmiary są zdefiniowane w /usr/include/bits/typesizes.h
:
#define __UID_T_TYPE __U32_TYPE
#define __GID_T_TYPE __U32_TYPE
#define __PID_T_TYPE __S32_TYPE
Innymi słowy, uid_t
i gid_t
są niepodpisanymi 32-bitowymi liczbami całkowitymi, a pid_t
jest podpisaną 32-bitową liczbą całkowitą. Dotyczy to zarówno 32-jak i 64-bitów.
Nie jestem pewien, jakie są na innych architekturach, ponieważ nie mam żadnych dostępnych w tej chwili, ale ostatecznym sposobem jest skompilowanie programu, który wyświetla wyjście sizeof(uid_t)
, itp.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-17 16:50:38
Standard definiuje {[0] } jako" signed integer type", a uid_t
i gid_t
jedynie jako "integer types" (więc przenośny Kod nie powinien zakładać dla nich żadnego konkretnego typu).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-09 21:41:37