Su sistemi Linux (a 32 o 64 bit), qual è la dimensione di pid_t
, uid_t
e gid_t
?Dimensioni di pid_t, uid_t, gid_t su Linux
risposta
#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: per grande richiesta (e perché, realisticamente, il 99% delle persone che vengono a questa domanda stanno per essere in esecuzione x86 o x86_64) ...
su un i686 e x86_64 (così, 32- bit e 64 bit) con processore Linux> = 3.0.0, la risposta è:
pid_t: 4
uid_t: 4
gid_t: 4
In architetture Intel, le dimensioni sono definite /usr/include/bits/typesizes.h
:
#define __UID_T_TYPE __U32_TYPE
#define __GID_T_TYPE __U32_TYPE
#define __PID_T_TYPE __S32_TYPE
In altre parole, uid_t
e gid_t
sono senza segno interi a 32 bit e pid_t
è un intero a 32 bit con segno. Questo vale sia per i 32 che per i 64 bit.
io non sono sicuro di quello che sono in altre architetture due piedi come io non ho alcun disponibile al momento, ma il modo definitivo di compilare un programma che stampa l'uscita di sizeof(uid_t)
, ecc
I standard definisce pid_t
come "tipo intero" e uid_t
e gid_t
semplicemente come "tipi interi" (così codice portabile non dovrebbe assumere qualsiasi tipo particolare di loro).
Quale standard? –
La mia manpage per 'types.h', che afferma di essere POSIX, dice' uid_t' e 'gid_t' sono tipi interi (nessuna menzione di firmati o non firmati), e' pid_t' è un tipo di intero con segno. – ptomato
@Chris Ho sbagliato su "pid_t", quindi ho corretto il mio post. Lo standard non dice nulla sulla firma di "uid_t" o "gid_t", comunque. –
- 1. rilasciano permanentemente i privilegi di root su Linux moderno
- 2. pid_t (e tipi simili) - perché, solo perché?
- 3. Come posso determinare il valore massimo di un pid_t?
- 4. Rileva dimensioni blocco per quota in Linux
- 5. su Linux
- 6. Più dimensioni di pagina enorme in Linux (x86-64)?
- 7. test su spazio su disco in linux
- 8. È possibile modificare le dimensioni di una named pipe su Linux?
- 9. Un visualizzatore PDF per PDF con immagini vettoriali di grandi dimensioni su linux?
- 10. Che cosa usare per controllare i collegamenti html nel progetto di grandi dimensioni, su Linux?
- 11. Profili di prestazioni su Linux
- 12. Utilizzo di ios_webkit_debug_proxy su linux
- 13. Aumenta le dimensioni dello stack in Linux con setrlimit
- 14. Readonly filesystem su Linux
- 15. Informazioni su Linux Scheduler
- 16. SO_REUSEPORT su linux
- 17. OpenCL compile su linux
- 18. windeployqt.exe su Linux Distribuzioni
- 19. Installa rabbitmqadmin su linux
- 20. Sviluppo ARM su Linux
- 21. prestazioni Socket su Linux
- 22. nginx installa su linux
- 23. Programmazione flash su Linux
- 24. Distribuzione software su Linux?
- 25. interprete prolog su linux?
- 26. libswiftDemangle.so su Linux
- 27. Installazione nloptr su Linux
- 28. Laravel elixir su linux
- 29. Programmazione webcam su Linux
- 30. Programmazione VHDL su Linux?
Bene, il codice è portatile anche se le risposte non lo sono. ;-) –
Le risposte sono portatili per tutti gli obiettivi Linux, per quanto ne so. Sono tutti 4. –
In realtà, il codice non era portatile, perché lo specificatore di formato era '% d', ma' sizeof' restituisce un 'size_t', che è senza segno e non necessariamente la dimensione di un' int'. Lo specificatore di formato portatile corretto è '% zu'. L'ho risolto –