Ñ§Ï°Íø¿¼ÊÔѧϰ×ÊÁÏ

Gzu521.com

Linux»·¾³ÏÂʵÏÖ×é¼þ·µ»ØÏûÏ¢µÄ¼¼ÇÉ

LINUX½Ì³Ì   µã»÷£º´Î   ·¢²¼Ê±¼ä£º2006-11-3   ¡¾×ÖÌ壺´ó ÖРС¡¿   À´Ô´£ºGzu521.com
¹ó ÖÝ Ñ§ ϰ Íø
ÎÒÃÇÔÚ±àдlinuxÔËÐпâʱ£¬ÌرðÊÇ×÷Ϊ×é¼þÌá½»¸øÆäËû³ÌÐòԱʹÓÃʱ£¬ºÜÓбØÒªÌṩ·µ»ØÏûÏ¢ÒÔÌá¸ß×é¼þÔÚ¿ª·¢¹ý³ÌÖеĿÉÓÃÐÔ¡£±¾ÎĽ«ÎªÄú½²ÊöһЩʵÓõļ¼ÇÉ¡£  
b€8RVi~ [´Ë×ÊÁÏתÌùÓÚÑ§Ï°ÍøµçÄÔ¿ÎÌÃLINUX½Ì³Ì ]£÷ww.£Çzu£µ21.£ãomb€8RVi~
¡¡¡¡ÔÚ±àдc/c++Ó¦ÓÃʱ£¬ÎÒÃǷdz£ÊìϤϵͳµ÷ÓÃÖеķµ»ØÏûÏ¢µÄ´¦Àí¡£ÔÚ·µ»ØÏûÏ¢ÖУ¬°üº¬ÁËÁ½ÀàÐÅÏ¢£¬Ò»¸öÊÇ·µ»ØÐÅÏ¢´úÂ룬ָÃ÷·µ»ØµÄÊǺÎÀàÐÅÏ¢£»ÁíÒ»¸ö·µ»ØµÄÊÇÐÅÏ¢µÄÎÄ×Ö˵Ã÷£¬Ö¸Ã÷µ÷ÓÃÊÇ·ñ³É¹¦¡£ÕâÁ½ÀàÐÅÏ¢¾ùÓи÷×ÔµÄ×÷Ó㬲»ÄÜÏ໥´úÌæ¡£±ÈÈçµ÷ÓüÓÔØÄÚ´æµÄϵͳµ÷Óã¬Èç¹û¸ÃÄÚ´æÒѾ­¼ÓÔØ£¬¸Ãµ÷ÓÿÉÄÜ·µ»Ø´íÎ󣬵«ÊdzÌÐò¿ÉÄÜ»¹»á¼ÌÐøÕýÈ·ÔËÐУ¬Èç¹ûÐèÒªÖÐÖ¹³ÌÐò£¬ÔòÐèÒªÁ˽â³ÌÐòÖÐÖ¹µÄ¾ßÌåÔ­Òò£¬Õâʱ½ö¿¿·µ»ØÏûÏ¢±êʶÊDz»¹»µÄ£¬·µ»ØÐÅÏ¢ÎÄ×Ö˵Ã÷ÔòÁ¢¿ÌÈÃÓû§ÖªµÀ´íÎóÔ­Òò¡£ÎÒÃÇÔÚ±àдlinuxÔËÐпâʱ£¬ÌرðÊÇ×÷Ϊ×é¼þÌá½»¸øÆäËû³ÌÐòԱʹÓÃʱ£¬ºÜÓбØÒªÌṩÀàËÆµÄ·µ»ØÏûÏ¢£¬ÒÔÌá¸ß×é¼þÔÚ¿ª·¢¹ý³ÌÖеĿÉÓÃÐÔ¡£  
¡¡¡¡1. ÀûÓñê×¼c¿âÖеķµ»ØÏûÏ¢  

¡¡¡¡ÔÚ×Ô¼º×é¼þÖеķ½·¨»ò¹ý³ÌÖУ¬Èç¹ûÏûÏ¢±È½ÏÒ»°ã£¬¿ÉÒÔÖ±½ÓÀûÓñê×¼c¿âÖеķµ»ØÏûÏ¢¡£±ê×¼c¿âÖеķµ»ØÏûÏ¢´úÂ붨ÒåÁÐÔÚÍ·Îļþerrno.hÖУ¬·µ»ØÏûÏ¢ÊÇÓôÓ0¿ªÊ¼µÄÒ»¸öÕûÊýÖµ±íʾµÄ£¬ÆäÖÐ0ΪÕýÈ·µÄ·µ»ØÖµ£¬ÆäËûΪ¾¯¸æÀàÐÍ»ò´íÎóÀàÐ͵ķµ»ØÖµ¡£ÔÚ±ê×¼c¿âÖУ¬ÓÃÁËÒ»¸öÈ«¾Ö±äÁ¿errnoÀ´Ö¸Ã÷µ±Ç°µ÷Óõķµ»ØÏûÏ¢Öµ¡£ÔÚ×é¼þµÄ·½·¨»ò¹ý³ÌÖУ¬¿ÉÒÔÖ±½ÓÉèÖÃerrnoµÄÖµ£¬µ±È»Òª·ûºÏerrno.hÖеÄÀàÐͶ¨Òå¡£ÔÚµ÷ÓÃ×é¼þÖеķ½·¨»ò¹ý³Ìʱ£¬¿ÉÒÔÖ±½Óµ÷ÓÃcÖеĺ¯Êýperror()»òstrerrno()À´Ìá½»·µ»ØÏûÏ¢µÄÎÄ×Ö˵Ã÷¡£  

¡¡¡¡2. ÊµÏÖ×Ô¶¨ÒåµÄ·µ»ØÏûÏ¢  

¡¡¡¡Ò»°ãÇé¿öÏ£¬±ê×¼cÖеÄÏûÏ¢²»×ãÒÔ·´Ó³×Ô¼º×é¼þÖеķ½·¨»ò¹ý³ÌÔËÐÐ״̬µÄ¡£ÕâʱÐèҪʵÏÖ×Ô¼ºÌØÓеķµ»ØÏûÏ¢¡£Ö÷Òª²½ÖèÈçÏ£º  

¡¡¡¡µÚÒ»£¬¹æ¶¨·µ»ØÏûÏ¢´úÂë¡£  

¡¡¡¡×é¼þÖз½·¨»ò¹ý³ÌµÄÔËÐÐ״̬ÖÐÓÐÒ»²¿·ÖÒª×÷Ϊ·µ»ØÖµ£¬ÕâЩ·µ»ØÖµÒª·´Ó³¶àÖÖ¸´ÔÓµÄÔËÐÐ״̬£¬Óгɹ¦·µ»ØÖµ¡¢Ò»°ãÔËÐÐÏûÏ¢Öµ¡¢¾¯¸æÖµ¡¢Ò»°ã´íÎóÖµ¡¢ÑÏÖØ´íÎóÖµµÈ¡£·µ»ØÏûÏ¢´úÂëÒªÖ±½Ó·´Ó³ÕâЩ״̬¡£ÁíÍ⣬·µ»ØÖµÖл¹ÐèÒª·´Ó³¸Ã·½·¨»ò¹ý³ÌλÓÚÄǸö×é¼þÖС£ÎÒÃÇ¿ÉÒÔÓÃÒ»¸öÕûÊýÖµµÄÍ·Á½Î»±êʶ·µ»ØÀàÐÍ£¬ÆäÖгɹ¦·µ»ØÖµ¡¢Ò»°ãÔËÐÐÏûÏ¢ÖµÓÃÕýÊý£¬¿ÉÒÔ·Ö±ð±êʶΪ0x10000000,0x20000000¡£¾¯¸æÖµ¡¢Ò»°ã´íÎóÖµ¡¢ÑÏÖØ´íÎóÖµÓøºÊýÖµ£¬¿ÉÒÔ·Ö±ð±êʶΪ0x80000000,0x90000000£¬0xa0000000¡£¶ø×é¼þ¿ÉÒÔÓõڶþ¸ö×Ö½Ú±êʶ£¬ÈçÊÂÎñ°²È«×é¼þÓÃ11±êʶ£¬Ôò¿ÉÒÔÓÃ0x000b00000±êʶ¡£·µ»ØÏûÏ¢µÄ¾ßÌå´úÂëÔò¿ÉÒÔÑØÓñê×¼c¿âÖеıíʾ·½·¨£¬ÈçÕýÈ··µ»ØÖµÓÃ0±êʶ£¬Ä³Ò»ÑÏÖØ´íÎó´íÎóÓÃ5±íʾ¡£Ôò¶ÔÓÚÊÂÎñ°²È«×é¼þ£¬ÕâÁ½ÖÖÏûÏ¢¿ÉÒÔ±êʶΪ0x100b0000ºÍ0xa00b0005¡£  

¡¡¡¡µÚ¶þ£¬±íÊö·µ»ØÏûÏ¢µÄÎÄ×Ö˵Ã÷  

¡¡¡¡±íÊö·µ»ØÏûÏ¢µÄÎÄ×Ö˵Ã÷ÁÐÔÚ×é¼þÀïµÄÒ»¸ö×Ö·û´®Êý×éÖУ¬¸÷¸öÏûÏ¢µÄÎÄ×Ö˵Ã÷ÔÚÊý×éÖеÄλÖð´ÕÕÏûÏ¢µÄ¾ßÌå´úÂëÖµ¾ö¶¨¡£  

¡¡¡¡ÀýÈçÊÂÎñ°²È«×é¼þÖж¨ÒåÈçÏÂËĸö·µ»ØÏûÏ¢£º0£¬³É¹¦·µ»ØÖµ£»1£¬ÊÂÎñ¶¨Òå´íÎó£»2£¬ÊÂÎñÌá½»´íÎó£»3£¬ÊÂÎñ·µ»Ø´íÎ󡣿ÉÒÔÔÚ¶¨ÒåÈçÏÂ×Ö·û´®Êý×飺  


char *returnmessage_11[] =   
{   
"³É¹¦·µ»Ø",   
"ÊÂÎñ¶¨Òå´íÎó",   
"ÊÂÎñÌá½»´íÎó",   
"ÊÂÎñ·µ»Ø´íÎó",   
(char *)0   
};   

};  

¡¡¡¡¶ÔÓ¦µÄ·µ»ØÏûÏ¢´úÂë·Ö±ðΪ£º0x100b0000£¬0x900b0001£¬0x900b0002£¬0x900b0003¡£ 

¡¡¡¡µÚÈý£¬×¢²á×é¼þ·µ»ØÏûÏ¢  
¡¡¡¡ÔÚÀûÓÃ×é¼þ¿ª·¢Ó¦ÓÃʱ£¬Ê×ÏÈÔÚ×é¼þµÄ¹¹Ô캯Êý»ò³õʼ»¯º¯ÊýÖÐ×¢²á×é¼þ·µ»ØÏûÏ¢£¬ÕâÒ»²½ÊÇÒþ²ØÔÚ×é¼þÄÚ²¿¡£¶ÔÓÚÍⲿӦÓÃÌṩÁËÒ»¸öÈ«¾ÖµÄÖ¸Ïò×é¼þ·µ»ØÏûÏ¢×Ö·û´®Êý×éµÄÖ¸Õëmsg_ptr¡£×¢²á´úÂëÈçÏ£º  


void *handle;   
char *messageshow;   

// ¼ÓÔØ¸Ã×é¼þµÄ¶¯Ì¬¿â   
handle = dlopen(null, rtld_lazy);   
// »ñµÃ×é¼þµÄ±êʶ   
sprintf(messageshow,"returnmessage_%d", componentidx);   
// È¡µÃ×é¼þ·µ»ØÏûÏ¢×Ö·û´®Êý×éÖ¸Õë   
msg_ptr[componentidx] = dlsym(handle, messageshow);  

¡¡¡¡µÚËÄ£¬»ñÈ¡×é¼þ·µ»ØÏûÏ¢µÄÎÄ×Ö˵Ã÷  

¡¡¡¡ÔÚ×¢²á×é¼þ·µ»ØÏûÏ¢ºó£¬ÔÚÓ¦Óõ÷ÓÃ×é¼þÖеķ½·¨»ò¹ý³Ìʱ£¬Ò»°ãÇé¿öÏ£¬¿ÉÒÔÖ±½Ó´Ó·µ»Ø´úÂëÖÐÅжϷµ»ØµÄÏûÏ¢ÄÚÈÝ¡£Ò²¿ÉÒÔµ÷ÓÃ×é¼þÖеÄstrerror(int rts)·½·¨»ñÈ¡×é¼þ·µ»ØÏûÏ¢µÄÎÄ×Ö˵Ã÷¡£  

¡¡¡¡¸Ã·½·¨µÄ´úÂëÈçÏ£º  


int errnoidx;   
int compomentidx;   
// »ñµÃ·µ»ØÏûÏ¢µÄ¾ßÌå´úÂë   
errnoidx = rts & 0xffff;   
// »ñµÃ×é¼þµÄ±êʶ   
compomentidx = (rts & 00ff0000) >> 16 ;   
// ·µ»Ø×é¼þ·µ»ØÏûÏ¢µÄÎÄ×Ö˵Ã÷   
return msg_ptr[compomentidx][errnoidx] ;  

¡¡¡¡ÀûÓÃÈçÉϵļ¼ÇÉ£¬¿ÉÒÔʹµÃÎÒÃÇ·¢²¼µÄlinux°üÔÚʹÓÃʱ¾ßÓнϺõĿÉÓÃÐÔ¡£ 

ÔðÈα༭£ºgzu521

µçÄÔ¿ÎÌ÷ÖÀà
Windows 2000½Ì³Ì
Windows XP½Ì³Ì
Windows 2003½Ì³Ì
Windows Vista½Ì³Ì
LINUX½Ì³Ì
Èí¼þ½Ìѧ
°ì¹«Èí¼þ
Ó²¼þDIY
·ÖÀàÍÆ¼öÐÅÏ¢
¸ü¶à...
´óÀà×îÐÂÎÄÕÂ
¸ü¶à...