LINUX C++ REGEXP ÕýÔò±í´ïʽ
ÔÚPOSIXÖУ¬±ãÓÐ×ÅÖ§³ÖÕýÔò±í´ïʽµÄϵͳº¯Êý¡£GNU/LinuxÓÐÁ½Ì׿â¿ÉÓÃÓÚÕýÔò±í´ïʽ±à³Ì£ºPOSIX¿âºÍPCRE¿â¡£Ç°Õß²»ÐèÒªµ¥¶À°²×°£¬Ò»°ãÐèÇó»¹ÊÇÄÜÂú×ãµÄ£¬ËÙ¶ÈÉÔÂýЩ¡£ºóÕßÊǾøºÊ¢ÃûµÄPerlÕýÔò±í´ïʽ¿â£¬¹¦ÄÜÇ¿´ó£¬Æ¥ÅäËٶȿ죬²»¹ý¿ÉÄÜÐèÒªµ¥¶À°²×°¡£
int regcomp (regex_t *compiled, const char *pattern, int cflags)
²ÎÊýcompiledÖ»ÓÐÒ»¸ö³ÉÔ±ÊÇÎÒÃÇÐèÒª¹Ø×¢µÄ£¬ÄǾÍÊÇre_nsub£¬´ú±í±àÒëºóµÄ×Ó±í´ïʽÊýÄ¿£¬ÓÉÓÚÎÒÃÇ»¹ÐèÒª±£´æÕû¸öÆ¥Åäµ½µÄģʽ£¬ËùÒÔ×îÖÕÆ¥ÅäµÄÌõÄ¿ÊýÊÇre_nsub¼Ó1¡£cflagsÓÃÀ´ÐÞÊÎÆ¥Åäģʽ£¬¿ÉÈ¡ÖµÈçÏ£º
REG_EXTENDED ÆôÓÃPOSIXÕýÔò¿âÀ©Õ¹£¬¹ØÓÚ¸ÃÀ©Õ¹µÄÏêϸÐÅÏ¢¿É²Î¿¼POSIX¹æ·¶
REG_ICASE ºöÂÔ´óСд
REG_NOSUB ²»Òª´æ´¢×Ó±í´ïʽ
REG_NEWLINE °Ñ»»Ðзû×÷Ϊ¶àÐеķָô·û£¬ÕâÑù'$'¿ÉÆ¥ÅäÿһÐеÄÐÐ⣬'^'Æ¥ÅäÿһÐеÄÐÐÊ×£¬'.'²»Æ¥Åä»»Ðзû£¬[^...]²»Æ¥ÅäÐÂÐС£
²ÎÊýregexÊÇÒ»¸ö×Ö·û´®£¬Ëü´ú±í½«Òª±»±àÒëµÄÕýÔò±í´ïʽ;²ÎÊýpregÖ¸ÏòÒ»¸öÉùÃ÷Ϊregex_tµÄÊý¾Ý½á¹¹£¬ÓÃÀ´±£´æ±àÒë½á¹û;²ÎÊýcflags¾ö¶¨ÁËÕýÔò±í´ïʽ¸ÃÈçºÎ±»´¦ÀíµÄϸ½Ú¡£
¡¡¡¡Èç¹ûº¯Êýregcomp()Ö´Ðгɹ¦£¬²¢ÇÒ±àÒë½á¹û±»ÕýÈ·Ìî³äµ½pregÖк󣬺¯Êý½«·µ»Ø0£¬ÈκÎÆäËüµÄ·µ»Ø½á¹û¶¼´ú±íÓÐijÖÖ´íÎó²úÉú¡£
¡¡¡¡Æ¥ÅäÕýÔò±í´ïʽ
¡¡¡¡Ò»µ©ÓÃregcomp()º¯Êý³É¹¦µØ±àÒëÁËÕýÔò±í´ïʽ£¬½ÓÏÂÀ´¾Í¿ÉÒÔµ÷ÓÃregexec()º¯ÊýÍê³ÉģʽƥÅ䣺
±àÒëÍêģʽºóÎÒÃÇ´ÓÄÚ´æÖзÖÅä×Ó±í´ïʽ´æ´¢¿Õ¼ä£¬È»ºóµ÷ÓÃregexec¶Ô´®½øÐÐÆ¥Å䣬¸Ãº¯ÊýÔÐÍÈçÏ£º
int regexec (regex_t *compiled, char *string, size_t nmatch, regmatch_t matchptr [], int eflags)
nmatchÖ¸Ã÷matchptrÊý×éµÄÊýÄ¿£¬¸ÃÊýÄ¿ÊÇcompiled->re_nsub+1£¬Ò²¿ÉÒÔÈÃnmatchΪ0,matchptrΪNULL£¬±íʾ²»Òª±£´æ×Ó±í´ïʽ¡£eflagsͨ³£Îª0¡£
²ÎÊýpregÖ¸Ïò±àÒëºóµÄÕýÔò±í´ïʽ£¬²ÎÊýstringÊǽ«Òª½øÐÐÆ¥ÅäµÄ×Ö·û´®£¬¶ø²ÎÊýnmatchºÍpmatchÔòÓÃÓÚ°ÑÆ¥Åä½á¹û·µ»Ø¸øµ÷ÓóÌÐò£¬×îºóÒ»¸ö²ÎÊýeflags¾ö¶¨ÁËÆ¥ÅäµÄϸ½Ú¡£
¡¡¡¡ÔÚµ÷Óú¯Êýregexec()½øÐÐģʽƥÅäµÄ¹ý³ÌÖУ¬¿ÉÄÜÔÚ×Ö·û´®stringÖлáÓжദÓë¸ø¶¨µÄÕýÔò±í´ïʽÏàÆ¥Å䣬²ÎÊýpmatch¾ÍÊÇÓÃÀ´±£´æÕâЩƥÅäλÖõģ¬¶ø²ÎÊýnmatchÔò¸æËߺ¯Êýregexec()×î¶à¿ÉÒ԰ѶàÉÙ¸öÆ¥Åä½á¹ûÌî³äµ½pmatchÊý×éÖС£µ±regexec()º¯Êý³É¹¦·µ»Øʱ£¬´Óstring+pmatch[0].rm_soµ½string+pmatch[0].rm_eoÊǵÚÒ»¸öÆ¥ÅäµÄ×Ö·û´®£¬¶ø´Óstring+pmatch[1].rm_soµ½string+pmatch[1].rm_eo£¬ÔòÊǵÚ
Ïà¹ØÎĵµ£º
linux ¿ª»úÆô¶¯½Å±¾Ë³Ðò¡£
µÚÒ»²½£ºÆô¶¯ÄÚºË
µÚ¶þ²½£ºÖ´ÐÐinit £¨ÅäÖÃÎļþ/etc/inittab£©
µÚÈý²½£ºÆô¶¯ÏàÓ¦µÄ½Å±¾£¬²¢ÇÒ´ò¿ªÖÕ¶Ë/etc/init.d
rc.sysinit rc.d(ÀïÃæµÄ½Å±¾£© rc.local
µÚËIJ½£ºÆô¶¯loginµÇ¼½çÃæ login
µÚÎå²½:ÔÚÓû§µÇ¼µÄʱºòÖ´ÐÐsh½Å±¾µÄ˳Ðò£ºÃ¿´ÎµÇ¼µÄʱºò¶ ......
do_exit() Function
-----------------------------------------------------------------------
kernel/exit.c
707 NORET_TYPE void do_exit(long code)
708 {
709 struct task_struct *tsk = current;
710
711 if (unlikely(in_interrupt()))
712 panic("Aiee, killing interrupt handler!");
713 if ......
Ô´´ÎÄÕ£¬×ªÔØÇë×¢Ã÷³ö´¦£¬Ð»Ð»£¡
×÷ÕߣºÇåÁÖ£¬²©¿ÍÃû£º·É¿Õ¾²¶É
ÔÚwindowsÏÂ×ö¹ý·´»ã±àµÄÈË£¬¹À¼Æ¶¼ÈÏʶollydbgÕâÑùÈí¼þ¡£Ã»´í£¬ollydbgÊÇwindowÏÂ×öÆƽâÈí¼þºÍ·´»ã±àÈí¼þÈËÊ¿µÄÀûÆ÷¡£ÏÖÔÚ½éÉÜÒ»¸öºÍollydbgÒ»ÑùµÄÈí¼þ£¬µ«ËüÊÇÔÚlinuxÏÂÔËÐÐµÄ --- EDG¡£
Õâ¸öÈí¼þµÄ×÷Õß±¾À´ÊǸöÈí¼þ·´»ã±àÈËÊ¿£¬ÔÚwindowsϾ³£·´»ã±à ......
select()µÄ»úÖÆÖÐÌṩһfd_setµÄÊý¾Ý½á¹¹£¬Êµ¼ÊÉÏÊÇÒ»longÀàÐ͵ÄÊý×飬 ÿһ¸öÊý×éÔªËض¼ÄÜÓëÒ»´ò¿ªµÄÎļþ¾ä±ú£¨²»¹ÜÊÇSocket¾ä±ú,»¹ÊÇÆäËû Îļþ»òÃüÃû¹ÜµÀ»òÉ豸¾ä±ú£©½¨Á¢ÁªÏµ£¬½¨Á¢ÁªÏµµÄ¹¤×÷ÓɳÌÐòÔ±Íê³É£¬ µ±µ÷ÓÃselect()ʱ£¬ÓÉÄں˸ù¾ÝIO״̬ÐÞ¸Äfd_setµÄÄÚÈÝ£¬ÓÉ´ËÀ´Í¨ÖªÖ´ ÐÐÁËselect()µÄ½ø³ÌÄ ......
1:ÔÚStaAfx.h ÖÐÌí¼ÓÈçÏ´úÂë #import "C:\\Program Files\\Common Files \\System\\ado\\msado15.dll" no_namespace rename("EOF","adoEOF")rename("BOF","adoBOF")
2:ÔÚBOOL CXXXApp::InitInstance()Öгõʼ»¯COM»·¾³
::CoInitialize(NULL);
ÊÍ·ÅCOM»·¾³
::CoUninitialize();
......