Auf Linux-Systemen (entweder 32- oder 64-Bit), wie groß ist die Größe von pid_t
, uid_t
und gid_t
?Größe von pid_t, uid_t, gid_t unter Linux
Antwort
#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 vielfachen Wunsch (und weil, realistisch gesehen, 99% der Menschen auf diese Frage kommen werden x86 oder x86_64 zu laufen) ...
auf einem i686 und x86_64 (so, 32- Bit und 64-Bit) Prozessor mit Linux> = 3.0.0, lautet die Antwort:
pid_t: 4
uid_t: 4
gid_t: 4
auf Intel-Architekturen sind Größen in /usr/include/bits/typesizes.h
definiert:
#define __UID_T_TYPE __U32_TYPE
#define __GID_T_TYPE __U32_TYPE
#define __PID_T_TYPE __S32_TYPE
, uid_t
und gid_t
sind unsigned 32-Bit-Integer und pid_t
ist eine ganze Zahl 32-Bit unterzeichnet. Dies gilt sowohl für 32- als auch für 64-Bit-Bits.
Ich bin nicht sicher, was sie auf andere Architekturen offhand sind, wie ich habe keine zur Zeit zur Verfügung, aber die endgültige Art und Weise ist es, ein Programm zu kompilieren, die die Ausgabe von sizeof(uid_t)
druckt usw.
Die standardpid_t
definiert als „vorzeichenbehaftete Ganzzahl-Typ“ und uid_t
und gid_t
lediglich als „Integer-Typen“ (so sollte portablen Code keinen bestimmten Typ für sie übernehmen).
Welcher Standard? –
Meine Manpage für 'types.h', die behauptet, POSIX zu sein, sagt' uid_t' und 'gid_t' sind Integer-Typen (keine Erwähnung von signed oder unsigned) und' pid_t' ist ein vorzeichenbehafteter Integer-Typ. – ptomato
@Chris Ich habe mich wegen "pid_t" geirrt, also habe ich meinen Beitrag korrigiert. Der Standard sagt jedoch nichts über die Signiertheit von "uid_t" oder "gid_t" aus. –
- 1. Löschen von .rbenv unter Linux
- 2. Verwenden von JProfiler unter Linux
- 3. Entwickeln von C# unter Linux
- 4. Verteilen von Software unter Linux?
- 5. Verwendung von ios_webkit_debug_proxy unter Linux
- 6. PDF-Größe in Millimetern mit image-magick unter Linux
- 7. Schlechte Performance von QPainter :: drawText unter Linux
- 8. Ändern der Größe eines Fensters auf eine feste Größe unter Linux
- 9. Echtzeit-Audioanalyse unter Linux
- 10. Programmierung Webcam unter Linux
- 11. OpenCL Kompilieren unter Linux
- 12. MASM unter Linux?
- 13. windeployqt.exe unter Linux-Distributionen
- 14. Herunterfahren unter Linux abbrechen?
- 15. ARM-Entwicklung unter Linux
- 16. Squeak SMTPs unter Linux
- 17. Was ist die richtigen printf Spezifizierer für pid_t Druck
- 18. Das Verhalten des fork() - Systemaufrufs unter Linux in diesem Code
- 19. libswiftDemangle.so unter Linux
- 20. ASP.Net unter Linux
- 21. Monitor Batteriestatus unter Linux
- 22. arpalert unter Linux
- 23. C++ Flash unter Linux
- 24. pgmagick Installation unter Linux
- 25. Pseudozufälliger Stapelzeiger unter Linux?
- 26. Benchmark-Programme unter Linux
- 27. GetTcpTable entspricht unter Linux
- 28. Dokumentenverwaltung unter Linux
- 29. tchar.h unter Linux
- 30. Traffic Shaping unter Linux
Nun, der Code ist tragbar, auch wenn die Antworten nicht sind. ;-) –
Die Antworten sind soweit ich weiß auf alle Linux-Targets übertragbar. Sie sind alle 4. –
Eigentlich war der Code nicht portierbar, weil der Formatbezeichner '% d' war, aber' sizeof' gibt ein 'size_t' zurück, das unsigned ist und nicht unbedingt die Größe eines' int'. Der korrekte portable Formatbezeichner ist '% zu'. Ich habe es repariert. –