| ¹ó ÖÝ Ñ§ ϰ Íø |
|
ÎÒÃÇÔÚ±àд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
| µçÄÔ¿ÎÌ÷ÖÀà | ||||||||||||||||
|
||||||||||||||||