ΪʲôLinuxϵͳµ÷Ó÷µ»ØÀàÐÍ¡°long¡±£¿
ÎÒÕýÔÚÔĶÁ
LinuxÄں˿ª·¢,µÚ3°æ,Á˽âÄÚºËʵÏÖºÍÉè¼Æ.µÚ5ÕÂÊǹØÓÚϵͳµ÷ÓÃ.×÷ÕßÏÔʾÁËʹÓÃSYSCALL_DEFINE0ºê¶¨ÒåµÄϵͳµ÷ÓÃÉùÃ÷µÄʾÀý,¸ÃºêÔÚ¸ÃÌØ¶¨Ê¾ÀýÖÐÕ¹¿ªÎª£º
asmlinkage long sys_getpid(void) Ëû½øÒ»²½Ëµ£º
Ëû²»»á±ÈÕâ¸üÉî¿Ì,ÎÒ²»ÄÜÍêÈ«Àí½âΪʲô»áÕâÑù.ΪʲôҪʹÓÃÓë32λºÍ64λϵͳÏà¹ØµÄ³¤ÆÚ¹ØÏµ£¿ÎªÊ²Ã´ÎÒÃDz»ÄÜ·µ»ØÒ»¸ö¼òµ¥µÄint£¿ ½â¾ö·½·¨
ÒòΪÔÚÐí¶à
64 bits»úÆ÷(ÀýÈçx86-64)ÉÏÓÃÓÚ³£¼ûµÄGCC±àÒëÆ÷sizeof(int)== 4µ«ÊÇsizeof(void *)== 8&&µÄsizeof(³¤)== 8;Õâ±»³ÆÎªI32LP64(»òÖ»ÊÇLP64)
data model
ÀýÈç,ÔÚLinux / x86-64ϵͳÉϱàÒë²¢ÔËÐÐÒÔϳÌÐò£º #include<stdio.h> #include<stdint.h> int main () { printf ("sizeof(int)=%dn",(int) sizeof (int)); printf ("sizeof(intptr_t)=%dn",(int) sizeof (intptr_t)); printf ("sizeof(short)=%dn",(int) sizeof (short)); printf ("sizeof(long)=%dn",(int) sizeof (long)); printf ("sizeof(long long)=%dn",(int) sizeof (long long)); printf ("sizeof(void*)=%dn",(int) sizeof (void *)); return 0; } ÔÚÎÒµÄϵͳÉÏʹÓÃgcc -Wall s.c -o±àÒë²¢ÔÚÎÒµÄDebian / Sid / x86-64(i3770k´¦ÀíÆ÷,GCC 4.8.2)ÉÏÔËÐÐ./s£º sizeof(int)=4 sizeof(intptr_t)=8 sizeof(short)=2 sizeof(long)=8 sizeof(long long)=8 sizeof(void*)=8 ÔÚ32λģʽÏÂʹÓÃgcc -m32 -Wall s.c -o s32±àÒë²¢ÔËÐÐ./s32£º sizeof(int)=4 sizeof(intptr_t)=4 sizeof(short)=2 sizeof(long)=4 sizeof(long long)=8 sizeof(void*)=4 Èç¹ûʹÓÃgcc -mx32 -O3 -Wall s.c -o sx32±àÒëx32,Îҵõ½ÏàͬµÄÊä³ö£¡ BTW,Ò²Ðí¸üºÃµÄÎÊÌâÊÇΪʲô²»Ê¹ÓÃintptr_t ¡.ÎÒ²»ÖªµÀ(¿ÉÄÜÊÇÒ»¸öϰ¹ßÎÊÌâ; when LinusÊ×ÏÈ¿ªÊ¼±àдËûµÄÄÚºË,C99±ê×¼¶¨Òå< stdint.h>ºÍintptr_t-²»´æÔÚ). ÔĶÁ¸ü¶à¹ØÓÚABIs,ÌØ±ðÊÇ×ÐϸÔĶÁX86-64 ABI(Áí¼ûx32 ABI ¡)ºÍx86 calling conventionsµÄwikipage. £¨±à¼£ºÀî´óͬ£© ¡¾ÉùÃ÷¡¿±¾Õ¾ÄÚÈݾùÀ´×ÔÍøÂ磬ÆäÏà¹ØÑÔÂÛ½ö´ú±í×÷Õ߸öÈ˹۵㣬²»´ú±í±¾Õ¾Á¢³¡¡£ÈôÎÞÒâÇÖ·¸µ½ÄúµÄȨÀû£¬Ç뼰ʱÓëÁªÏµÕ¾³¤É¾³ýÏà¹ØÄÚÈÝ! |
- linux ¨C ±àÒëºóʹÓÃgedit´ò¿ªCÎļþʱ³öÏÖÒâÍ⾯¸æ
- Êý×é ¨C Ϊʲô¶ÁÈ¡-aÔÚzshÖÐʧ°Ü
- ³¢ÊÔÔÚlinuxÉÏÌáÈ¡7zip´æµµÊ±µÃµ½´íÎó¡°²»ÕýÈ·µÄÃüÁîÐС±
- Linux»ù±¾²Ù×÷
- linux ¨C ÎÒÐèÒª¶àÉÙIOPS£¿ÎҵŤ×÷Á¿Æ¿¾±ÊÇ´æ´¢
- ÈçºÎʹÓÃActive Directory¶ÔLinuxÓû§½øÐÐÉí·ÝÑéÖ¤
- redhat ¨C µ¼ÈëcaÖ¤ÊéÁ´(.crt) ¨C RHEL7
- linux ¨C µ±¼ÆËã»úÇл»µ½Ë¯Ãßģʽʱ,TCPÁ¬½Ó»á·¢Éúʲô£¿
- linux ¨C ÈçºÎ¸ù¾ÝËûÃDz¿ÊðµÄ»·¾³ÔÚpuppetÖÐÉú³É×Ô¶¨ÒåµÄsu
- Linux x64£ºÎªÊ²Ã´r10À´×Ôϵͳµ÷ÓÃÖеÄr8ºÍr9£¿
- linux ¨C ÎÞ·¨ÔÚCentOS 7ÉÏÖØÆôhttpd.service(Ap
- linux ¨C ʹÓÃrsvg-convert¿ÉÒÔ½«¶àÒ³»ò¶àÎļþSV
- Èý½£¿ÍÀÏ´óawkµÄÏà¹ØÓ¦Ó㨸ɻõ£©
- linux ¨C Èç¹û»ã±à³ÌÐòÖÐûÓÐÍ˳öϵͳµ÷ÓûᷢÉú
- Linuxϵͳµ÷ÓÅ¡ª¡ªMemoryÄڴ棨¶þ£©
- linux-networking ¨C Linux£ºÈçºÎÔÚÒ»¸ölinux»úÆ÷
- linux ¨C ÔÚbash½Å±¾ÖÐ,ÈçºÎÔÚwhileÑ»·Ìõ¼þϵ÷
- ÊÇ·ñ¿ÉÒÔÈÃcmake¹¹½¨Îļþ(CMakeLists.txt)²»ÔÚCL
- linux ¨C ÈçºÎ×èÖ¹Apache±ÀÀ£ÎÒµÄÕû¸ö·þÎñÆ÷£¿
- RedHat Linux-ÅäÖÃYUM²Ö¿â