Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
½ø³Ì¼äͨÐÅIPC (InterProcess Communication)
 
  2648  次浏览      27
 2019-8-28
 
±à¼­ÍƼö:
±¾ÎÄÀ´×Ôjianshu £¬±¾ÎÄÖ÷Òª½éÉÜÁ˽ø³Ì¼äͨÐŵĸÅÄîÒÔ¼°½ø³Ì¼äͨÐŵÄ7ÖÖ·½Ê½µÈ£¬Ï£Íû¶ÔÄúÄÜÓÐËù°ïÖú¡£

Ò»¡¢½ø³Ì¼äͨÐŵĸÅÄî

ÿ¸ö½ø³Ì¸÷×ÔÓв»Í¬µÄÓû§µØÖ·¿Õ¼ä£¬ÈκÎÒ»¸ö½ø³ÌµÄÈ«¾Ö±äÁ¿ÔÚÁíÒ»¸ö½ø³ÌÖж¼¿´²»µ½£¬ËùÒÔ½ø³ÌÖ®¼äÒª½»»»Êý¾Ý±ØÐëͨ¹ýÄںˣ¬ÔÚÄÚºËÖпª±ÙÒ»¿é»º³åÇø£¬½ø³Ì1°ÑÊý¾Ý´ÓÓû§¿Õ¼ä¿½µ½Äں˻º³åÇø£¬½ø³Ì2ÔÙ´ÓÄں˻º³åÇø°ÑÊý¾Ý¶Á×ߣ¬ÄÚºËÌṩµÄÕâÖÖ»úÖÆ³ÆÎª½ø³Ì¼äͨÐÅ£¨IPC£¬InterProcess Communication£©

½ø³Ì¼äͨÐÅÄ£ÐÍ

¶þ¡¢½ø³Ì¼äͨÐŵÄ7ÖÖ·½Ê½

µÚÒ»Àࣺ´«Í³µÄUnixͨÐÅ»úÖÆ

1. ¹ÜµÀ/ÄäÃû¹ÜµÀ(pipe)

¹ÜµÀÊǰëË«¹¤µÄ£¬Êý¾ÝÖ»ÄÜÏòÒ»¸ö·½ÏòÁ÷¶¯£»ÐèҪ˫·½Í¨ÐÅʱ£¬ÐèÒª½¨Á¢ÆðÁ½¸ö¹ÜµÀ¡£

Ö»ÄÜÓÃÓÚ¸¸×Ó½ø³Ì»òÕßÐֵܽø³ÌÖ®¼ä(¾ßÓÐÇ×Ôµ¹ØÏµµÄ½ø³Ì);

µ¥¶À¹¹³ÉÒ»ÖÖ¶ÀÁ¢µÄÎļþϵͳ£º¹ÜµÀ¶ÔÓڹܵÀÁ½¶ËµÄ½ø³Ì¶øÑÔ£¬¾ÍÊÇÒ»¸öÎļþ£¬µ«Ëü²»ÊÇÆÕͨµÄÎļþ£¬Ëü²»ÊôÓÚijÖÖÎļþϵͳ£¬¶øÊÇ×ÔÁ¢ÃÅ»§£¬µ¥¶À¹¹³ÉÒ»ÖÖÎļþϵͳ£¬²¢ÇÒÖ»´æÔÚÓëÄÚ´æÖС£

Êý¾ÝµÄ¶Á³öºÍдÈ룺һ¸ö½ø³ÌÏò¹ÜµÀÖÐдµÄÄÚÈݱ»¹ÜµÀÁíÒ»¶ËµÄ½ø³Ì¶Á³ö¡£Ð´ÈëµÄÄÚÈÝÿ´Î¶¼Ìí¼ÓÔڹܵÀ»º³åÇøµÄĩ⣬²¢ÇÒÿ´Î¶¼ÊÇ´Ó»º³åÇøµÄÍ·²¿¶Á³öÊý¾Ý¡£

½ø³Ì¼ä¹ÜµÀͨÐÅÄ£ÐÍ

¹ÜµÀµÄʵÖÊ£º

¹ÜµÀµÄʵÖÊÊÇÒ»¸öÄں˻º³åÇø£¬½ø³ÌÒÔÏȽøÏȳöµÄ·½Ê½´Ó»º³åÇø´æÈ¡Êý¾Ý£¬¹ÜµÀÒ»¶ËµÄ½ø³Ì˳ÐòµÄ½«Êý¾ÝдÈ뻺³åÇø£¬ÁíÒ»¶ËµÄ½ø³ÌÔò˳ÐòµÄ¶Á³öÊý¾Ý¡£

¸Ã»º³åÇø¿ÉÒÔ¿´×öÊÇÒ»¸öÑ­»·¶ÓÁУ¬¶ÁºÍдµÄλÖö¼ÊÇ×Ô¶¯Ôö³¤µÄ£¬²»ÄÜËæÒâ¸Ä±ä£¬Ò»¸öÊý¾ÝÖ»Äܱ»¶ÁÒ»´Î£¬¶Á³öÀ´ÒÔºóÔÚ»º³åÇø¾Í²»¸´´æÔÚÁË¡£

µ±»º³åÇø¶Á¿Õ»òÕßдÂúʱ£¬ÓÐÒ»¶¨µÄ¹æÔò¿ØÖÆÏàÓ¦µÄ¶Á½ø³Ì»òÕßд½ø³Ì½øÈëµÈ´ý¶ÓÁУ¬µ±¿ÕµÄ»º³åÇøÓÐÐÂÊý¾ÝдÈë»òÕßÂúµÄ»º³åÇøÓÐÊý¾Ý¶Á³öÀ´Ê±£¬¾Í»½Ðѵȴý¶ÓÁÐÖеĽø³Ì¼ÌÐø¶Áд¡£

¹ÜµÀµÄ¾ÖÏÞ£º

¹ÜµÀµÄÖ÷Òª¾ÖÏÞÐÔÕýÌåÏÖÔÚËüµÄÌØµãÉÏ£º

Ö»Ö§³Öµ¥ÏòÊý¾ÝÁ÷£»

Ö»ÄÜÓÃÓÚ¾ßÓÐÇ×Ôµ¹ØÏµµÄ½ø³ÌÖ®¼ä£»

ûÓÐÃû×Ö£»

¹ÜµÀµÄ»º³åÇøÊÇÓÐÏ޵썹ܵÀÖÆ´æÔÚÓÚÄÚ´æÖУ¬ÔڹܵÀ´´½¨Ê±£¬Îª»º³åÇø·ÖÅäÒ»¸öÒ³Ãæ´óС£©£»

¹ÜµÀËù´«Ë͵ÄÊÇÎÞ¸ñʽ×Ö½ÚÁ÷£¬Õâ¾ÍÒªÇó¹ÜµÀµÄ¶Á³ö·½ºÍдÈë·½±ØÐëÊÂÏÈÔ¼¶¨ºÃÊý¾ÝµÄ¸ñʽ£¬±ÈÈç¶àÉÙ×Ö½ÚËã×÷Ò»¸öÏûÏ¢£¨»òÃüÁî¡¢»ò¼Ç¼£©µÈµÈ£»

2. ÓÐÃû¹ÜµÀ(FIFO)

ÄäÃû¹ÜµÀ£¬ÓÉÓÚûÓÐÃû×Ö£¬Ö»ÄÜÓÃÓÚÇ×Ôµ¹ØÏµµÄ½ø³Ì¼äͨÐÅ¡£ÎªÁ˿˷þÕâ¸öȱµã£¬Ìá³öÁËÓÐÃû¹ÜµÀ(FIFO)¡£

ÓÐÃû¹ÜµÀ²»Í¬ÓÚÄäÃû¹ÜµÀÖ®´¦ÔÚÓÚËüÌṩÁËÒ»¸ö·¾¶ÃûÓëÖ®¹ØÁª£¬ÒÔÓÐÃû¹ÜµÀµÄÎļþÐÎʽ´æÔÚÓÚÎļþϵͳÖУ¬ÕâÑù£¬¼´Ê¹ÓëÓÐÃû¹ÜµÀµÄ´´½¨½ø³Ì²»´æÔÚÇ×Ôµ¹ØÏµµÄ½ø³Ì£¬Ö»Òª¿ÉÒÔ·ÃÎʸ÷¾¶£¬¾ÍÄܹ»±Ë´Ëͨ¹ýÓÐÃû¹ÜµÀÏ໥ͨÐÅ£¬Òò´Ë£¬Í¨¹ýÓÐÃû¹ÜµÀ²»Ïà¹ØµÄ½ø³ÌÒ²Äܽ»»»Êý¾Ý¡£ÖµµÄ×¢ÒâµÄÊÇ£¬ÓÐÃû¹ÜµÀÑϸñ×ñÑ­ÏȽøÏȳö(first in first out),¶ÔÄäÃû¹ÜµÀ¼°ÓÐÃû¹ÜµÀµÄ¶Á×ÜÊÇ´Ó¿ªÊ¼´¦·µ»ØÊý¾Ý£¬¶ÔËüÃǵÄдÔò°ÑÊý¾ÝÌí¼Óµ½Ä©Î²¡£ËüÃDz»Ö§³ÖÖîÈçlseek()µÈÎļþ¶¨Î»²Ù×÷¡£ÓÐÃû¹ÜµÀµÄÃû×Ö´æÔÚÓÚÎļþϵͳÖУ¬ÄÚÈÝ´æ·ÅÔÚÄÚ´æÖС£

ÄäÃû¹ÜµÀºÍÓÐÃû¹ÜµÀ×ܽ᣺

£¨1£©¹ÜµÀÊÇÌØÊâÀàÐ͵ÄÎļþ£¬ÔÚÂú×ãÏÈÈëÏȳöµÄÔ­ÔòÌõ¼þÏ¿ÉÒÔ½øÐжÁд£¬µ«²»ÄܽøÐж¨Î»¶Áд¡£

£¨2£©ÄäÃû¹ÜµÀÊǵ¥ÏòµÄ£¬Ö»ÄÜÔÚÓÐÇ×Ôµ¹ØÏµµÄ½ø³Ì¼äͨÐÅ£»ÓÐÃû¹ÜµÀÒÔ´ÅÅÌÎļþµÄ·½Ê½´æÔÚ£¬¿ÉÒÔʵÏÖ±¾»úÈÎÒâÁ½¸ö½ø³ÌͨÐÅ¡£

£¨3£©ÎÞÃû¹ÜµÀ×èÈûÎÊÌ⣺ÎÞÃû¹ÜµÀÎÞÐèÏÔʾ´ò¿ª£¬´´½¨Ê±Ö±½Ó·µ»ØÎļþÃèÊö·û£¬ÔÚ¶ÁдʱÐèҪȷ¶¨¶Ô·½µÄ´æÔÚ£¬·ñÔò½«Í˳ö¡£Èç¹ûµ±Ç°½ø³ÌÏòÎÞÃû¹ÜµÀµÄÒ»¶ËдÊý¾Ý£¬±ØÐëÈ·¶¨ÁíÒ»¶ËÓÐijһ½ø³Ì¡£Èç¹ûдÈëÎÞÃû¹ÜµÀµÄÊý¾Ý³¬¹ýÆä×î´óÖµ£¬Ð´²Ù×÷½«×èÈû£¬Èç¹û¹ÜµÀÖÐûÓÐÊý¾Ý£¬¶Á²Ù×÷½«×èÈû£¬Èç¹û¹ÜµÀ·¢ÏÖÁíÒ»¶Ë¶Ï¿ª£¬½«×Ô¶¯Í˳ö¡£

£¨4£©ÓÐÃû¹ÜµÀ×èÈûÎÊÌ⣺ÓÐÃû¹ÜµÀÔÚ´ò¿ªÊ±ÐèҪȷʵ¶Ô·½µÄ´æÔÚ£¬·ñÔò½«×èÈû¡£¼´ÒÔ¶Á·½Ê½´ò¿ªÄ³¹ÜµÀ£¬ÔÚ´Ë֮ǰ±ØÐëÒ»¸ö½ø³ÌÒÔд·½Ê½´ò¿ª¹ÜµÀ£¬·ñÔò×èÈû¡£´ËÍ⣬¿ÉÒÔÒÔ¶Áд£¨O_RDWR£©Ä£Ê½´ò¿ªÓÐÃû¹ÜµÀ£¬¼´µ±Ç°½ø³Ì¶Á£¬µ±Ç°½ø³Ìд£¬²»»á×èÈû¡£

3. ÐźÅ(Signal)

ÐźÅÊÇLinuxϵͳÖÐÓÃÓÚ½ø³Ì¼ä»¥ÏàͨÐÅ»òÕß²Ù×÷µÄÒ»ÖÖ»úÖÆ£¬ÐźſÉÒÔÔÚÈκÎʱºò·¢¸øÄ³Ò»½ø³Ì£¬¶øÎÞÐèÖªµÀ¸Ã½ø³ÌµÄ״̬¡£

Èç¹û¸Ã½ø³Ìµ±Ç°²¢Î´´¦ÓÚÖ´ÐÐ״̬£¬Ôò¸ÃÐźžÍÓÐÄں˱£´æÆðÀ´£¬ÖªµÀ¸Ã½ø³Ì»Ø¸´Ö´Ðв¢´«µÝ¸øËüΪֹ¡£

Èç¹ûÒ»¸öÐźű»½ø³ÌÉèÖÃΪ×èÈû£¬Ôò¸ÃÐźŵĴ«µÝ±»ÑÓ³Ù£¬Ö±µ½Æä×èÈû±»È¡ÏûÊDzű»´«µÝ¸ø½ø³Ì¡£LinuxϵͳÖг£ÓÃÐźţº

£¨1£©SIGHUP£ºÓû§´ÓÖÕ¶Ë×¢Ïú£¬ËùÓÐÒÑÆô¶¯½ø³Ì¶¼½«ÊÕµ½¸Ã½ø³Ì¡£ÏµÍ³È±Ê¡×´Ì¬Ï¶ԸÃÐźŵĴ¦ÀíÊÇÖÕÖ¹½ø³Ì¡£

£¨2£©SIGINT£º³ÌÐòÖÕÖ¹Ðźš£³ÌÐòÔËÐйý³ÌÖУ¬°´Ctrl+C¼ü½«²úÉú¸ÃÐźš£

£¨3£©SIGQUIT£º³ÌÐòÍ˳öÐźš£³ÌÐòÔËÐйý³ÌÖУ¬°´Ctrl+\\¼ü½«²úÉú¸ÃÐźš£

£¨4£©SIGBUSºÍSIGSEGV£º½ø³Ì·ÃÎÊ·Ç·¨µØÖ·¡£

£¨5£©SIGFPE£ºÔËËãÖгöÏÖÖÂÃü´íÎó£¬Èç³ýÁã²Ù×÷¡¢Êý¾ÝÒç³öµÈ¡£

£¨6£©SIGKILL£ºÓû§ÖÕÖ¹½ø³ÌÖ´ÐÐÐźš£shellÏÂÖ´ÐÐkill -9·¢Ë͸ÃÐźš£

£¨7£©SIGTERM£º½áÊø½ø³ÌÐźš£shellÏÂÖ´ÐÐkill ½ø³Ìpid·¢Ë͸ÃÐźš£

£¨8£©SIGALRM£º¶¨Ê±Æ÷Ðźš£

£¨9£©SIGCLD£º×Ó½ø³ÌÍ˳öÐźš£Èç¹ûÆä¸¸½ø³ÌûÓкöÂÔ¸ÃÐźÅҲûÓд¦Àí¸ÃÐźţ¬Ôò×Ó½ø³ÌÍ˳öºó½«Ðγɽ©Ê¬½ø³Ì¡£

ÐźÅÀ´Ô´

ÐźÅÊÇÈí¼þ²ã´ÎÉ϶ÔÖжϻúÖÆµÄÒ»ÖÖÄ£Ä⣬ÊÇÒ»ÖÖÒ첽ͨÐÅ·½Ê½£¬£¬ÐźſÉÒÔÔÚÓû§¿Õ¼ä½ø³ÌºÍÄÚºËÖ®¼äÖ±½Ó½»»¥£¬Äں˿ÉÒÔÀûÓÃÐźÅÀ´Í¨ÖªÓû§¿Õ¼äµÄ½ø³Ì·¢ÉúÁËÄÄЩϵͳʼþ£¬ÐźÅʼþÖ÷ÒªÓÐÁ½¸öÀ´Ô´£º

Ó²¼þÀ´Ô´£ºÓû§°´¼üÊäÈëCtrl+CÍ˳ö¡¢Ó²¼þÒì³£ÈçÎÞЧµÄ´æ´¢·ÃÎʵȡ£

Èí¼þÖÕÖ¹£ºÖÕÖ¹½ø³ÌÐźš¢ÆäËû½ø³Ìµ÷ÓÃkillº¯Êý¡¢Èí¼þÒì³£²úÉúÐźš£

ÐźÅÉúÃüÖÜÆÚºÍ´¦ÀíÁ÷³Ì

£¨1£©Ðźű»Ä³¸ö½ø³Ì²úÉú£¬²¢ÉèÖôËÐźŴ«µÝµÄ¶ÔÏó£¨Ò»°ãΪ¶ÔÓ¦½ø³ÌµÄpid£©£¬È»ºó´«µÝ¸ø²Ù×÷ϵͳ£»

£¨2£©²Ù×÷ϵͳ¸ù¾Ý½ÓÊÕ½ø³ÌµÄÉèÖã¨ÊÇ·ñ×èÈû£©¶øÑ¡ÔñÐԵķ¢Ë͸ø½ÓÊÕÕߣ¬Èç¹û½ÓÊÕÕß×èÈû¸ÃÐźţ¨ÇÒ¸ÃÐźÅÊÇ¿ÉÒÔ×èÈûµÄ£©£¬²Ù×÷ϵͳ½«ÔÝʱ±£Áô¸ÃÐźţ¬¶ø²»´«µÝ£¬Ö±µ½¸Ã½ø³Ì½â³ýÁ˶ԴËÐźŵÄ×èÈû£¨Èç¹û¶ÔÓ¦½ø³ÌÒѾ­Í˳ö£¬Ôò¶ªÆú´ËÐźţ©£¬Èç¹û¶ÔÓ¦½ø³ÌûÓÐ×èÈû£¬²Ù×÷ϵͳ½«´«µÝ´ËÐźš£

£¨3£©Ä¿µÄ½ø³Ì½ÓÊÕµ½´ËÐźź󣬽«¸ù¾Ýµ±Ç°½ø³Ì¶Ô´ËÐźÅÉèÖõÄÔ¤´¦Àí·½Ê½£¬ÔÝʱÖÕÖ¹µ±Ç°´úÂëµÄÖ´ÐУ¬±£»¤ÉÏÏÂÎÄ£¨Ö÷Òª°üÀ¨ÁÙʱ¼Ä´æÆ÷Êý¾Ý£¬µ±Ç°³ÌÐòλÖÃÒÔ¼°µ±Ç°CPUµÄ״̬£©¡¢×ª¶øÖ´ÐÐÖжϷþÎñ³ÌÐò£¬Ö´ÐÐÍê³ÉºóÔڻظ´µ½ÖжϵÄλÖᣵ±È»£¬¶ÔÓÚÇÀռʽÄںˣ¬ÔÚÖжϷµ»ØÊ±»¹½«Òý·¢Ðµĵ÷¶È¡£

ÐźŵÄÉúÃüÖÜÆÚ

4. ÏûÏ¢(Message)¶ÓÁÐ

ÏûÏ¢¶ÓÁÐÊÇ´æ·ÅÔÚÄÚºËÖеÄÏûÏ¢Á´±í£¬Ã¿¸öÏûÏ¢¶ÓÁÐÓÉÏûÏ¢¶ÓÁбêʶ·û±íʾ¡£

Óë¹ÜµÀ£¨ÎÞÃû¹ÜµÀ£ºÖ»´æÔÚÓÚÄÚ´æÖеÄÎļþ£»ÃüÃû¹ÜµÀ£º´æÔÚÓÚʵ¼ÊµÄ´ÅÅ̽éÖÊ»òÕßÎļþϵͳ£©²»Í¬µÄÊÇÏûÏ¢¶ÓÁдæ·ÅÔÚÄÚºËÖУ¬Ö»ÓÐÔÚÄÚºËÖØÆô(¼´£¬²Ù×÷ÏµÍ³ÖØÆô)»òÕßÏÔʾµØÉ¾³ýÒ»¸öÏûÏ¢¶ÓÁÐʱ£¬¸ÃÏûÏ¢¶ÓÁÐ²Å»á±»ÕæÕýµÄɾ³ý¡£

ÁíÍâÓë¹ÜµÀ²»Í¬µÄÊÇ£¬ÏûÏ¢¶ÓÁÐÔÚij¸ö½ø³ÌÍùÒ»¸ö¶ÓÁÐдÈëÏûϢ֮ǰ£¬²¢²»ÐèÒªÁíÍâij¸ö½ø³ÌÔڸöÓÁÐÉϵȴýÏûÏ¢µÄµ½´ï¡£

ÏûÏ¢¶ÓÁÐÌØµã×ܽ᣺

£¨1£©ÏûÏ¢¶ÓÁÐÊÇÏûÏ¢µÄÁ´±í,¾ßÓÐÌØ¶¨µÄ¸ñʽ,´æ·ÅÔÚÄÚ´æÖв¢ÓÉÏûÏ¢¶ÓÁбêʶ·û±êʶ.

£¨2£©ÏûÏ¢¶ÓÁÐÔÊÐíÒ»¸ö»ò¶à¸ö½ø³ÌÏòËüдÈëÓë¶ÁÈ¡ÏûÏ¢.

£¨3£©¹ÜµÀºÍÏûÏ¢¶ÓÁеÄͨÐÅÊý¾Ý¶¼ÊÇÏȽøÏȳöµÄÔ­Ôò¡£

£¨4£©ÏûÏ¢¶ÓÁпÉÒÔʵÏÖÏûÏ¢µÄËæ»ú²éѯ,ÏûÏ¢²»Ò»¶¨ÒªÒÔÏȽøÏȳöµÄ´ÎÐò¶ÁÈ¡,Ò²¿ÉÒÔ°´ÏûÏ¢µÄÀàÐͶÁÈ¡.±ÈFIFO¸üÓÐÓÅÊÆ¡£

£¨5£©ÏûÏ¢¶ÓÁп˷þÁËÐźųÐÔØÐÅÏ¢Á¿ÉÙ£¬¹ÜµÀÖ»ÄܳÐÔØÎÞ¸ñʽ×Ö ½ÚÁ÷ÒÔ¼°»º³åÇø´óСÊÜÏÞµÈȱ¡£

£¨6£©Ä¿Ç°Ö÷ÒªÓÐÁ½ÖÖÀàÐ͵ÄÏûÏ¢¶ÓÁУºPOSIXÏûÏ¢¶ÓÁÐÒÔ¼°System VÏûÏ¢¶ÓÁУ¬ÏµÍ³VÏûÏ¢¶ÓÁÐĿǰ±»´óÁ¿Ê¹Óá£ÏµÍ³VÏûÏ¢¶ÓÁÐÊÇËæÄں˳ÖÐøµÄ£¬Ö»ÓÐÔÚÄÚºËÖØÆð»òÕßÈ˹¤É¾³ýʱ£¬¸ÃÏûÏ¢¶ÓÁвŻᱻɾ³ý¡£

5. ¹²ÏíÄÚ´æ(share memory)

ʹµÃ¶à¸ö½ø³Ì¿ÉÒÔ¿ÉÒÔÖ±½Ó¶Áдͬһ¿éÄÚ´æ¿Õ¼ä£¬ÊÇ×î¿ìµÄ¿ÉÓÃIPCÐÎʽ¡£ÊÇÕë¶ÔÆäËûͨÐÅ»úÖÆÔËÐÐЧÂʽϵͶøÉè¼ÆµÄ¡£

ΪÁËÔÚ¶à¸ö½ø³Ì¼ä½»»»ÐÅÏ¢£¬ÄÚºËרÃÅÁô³öÁËÒ»¿éÄÚ´æÇø£¬¿ÉÒÔÓÉÐèÒª·ÃÎʵĽø³Ì½«ÆäÓ³Éäµ½×Ô¼ºµÄ˽ÓеØÖ·¿Õ¼ä¡£½ø³Ì¾Í¿ÉÒÔÖ±½Ó¶ÁдÕâÒ»¿éÄÚ´æ¶ø²»ÐèÒª½øÐÐÊý¾ÝµÄ¿½±´£¬´Ó¶ø´ó´óÌá¸ßЧÂÊ¡£

ÓÉÓÚ¶à¸ö½ø³Ì¹²ÏíÒ»¶ÎÄڴ棬Òò´ËÐèÒªÒÀ¿¿Ä³ÖÖͬ²½»úÖÆ£¨ÈçÐźÅÁ¿£©À´´ïµ½½ø³Ì¼äµÄͬ²½¼°»¥³â¡£

ÑÓÉìÔĶÁ£ºLinuxÖ§³ÖµÄÖ÷ÒªÈýÖÖ¹²ÏíÄڴ淽ʽ£ºmmap()ϵͳµ÷Óá¢Posix¹²ÏíÄڴ棬ÒÔ¼°System V¹²ÏíÄÚ´æÊµ¼ù

¹²ÏíÄÚ´æÔ­Àíͼ

6. ÐźÅÁ¿(semaphore)

ÐźÅÁ¿ÊÇÒ»¸ö¼ÆÊýÆ÷£¬ÓÃÓÚ¶à½ø³Ì¶Ô¹²ÏíÊý¾ÝµÄ·ÃÎÊ£¬ÐźÅÁ¿µÄÒâͼÔÚÓÚ½ø³Ì¼äͬ²½¡£

ΪÁË»ñµÃ¹²Ïí×ÊÔ´£¬½ø³ÌÐèÒªÖ´ÐÐÏÂÁвÙ×÷£º

£¨1£©´´½¨Ò»¸öÐźÅÁ¿£ºÕâÒªÇóµ÷ÓÃÕßÖ¸¶¨³õʼֵ£¬¶ÔÓÚ¶þÖµÐźÅÁ¿À´Ëµ£¬Ëüͨ³£ÊÇ1£¬Ò²¿ÉÊÇ0¡£

£¨2£©µÈ´ýÒ»¸öÐźÅÁ¿£º¸Ã²Ù×÷»á²âÊÔÕâ¸öÐźÅÁ¿µÄÖµ£¬Èç¹ûСÓÚ0£¬¾Í×èÈû¡£Ò²³ÆÎªP²Ù×÷¡£

£¨3£©¹Ò³öÒ»¸öÐźÅÁ¿£º¸Ã²Ù×÷½«ÐźÅÁ¿µÄÖµ¼Ó1£¬Ò²³ÆÎªV²Ù×÷¡£

ΪÁËÕýÈ·µØÊµÏÖÐźÅÁ¿£¬ÐźÅÁ¿ÖµµÄ²âÊÔ¼°¼õ1²Ù×÷Ó¦µ±ÊÇÔ­×Ó²Ù×÷¡£Îª´Ë£¬ÐźÅÁ¿Í¨³£ÊÇÔÚÄÚºËÖÐʵÏֵġ£Linux»·¾³ÖУ¬ÓÐÈýÖÖÀàÐÍ£ºPosix£¨¿ÉÒÆÖ²ÐÔ²Ù×÷ϵͳ½Ó¿Ú£©ÓÐÃûÐźÅÁ¿£¨Ê¹ÓÃPosix IPCÃû×Ö±êʶ£©¡¢Posix»ùÓÚÄÚ´æµÄÐźÅÁ¿£¨´æ·ÅÔÚ¹²ÏíÄÚ´æÇøÖУ©¡¢System VÐźÅÁ¿£¨ÔÚÄÚºËÖÐά»¤£©¡£ÕâÈýÖÖÐźÅÁ¿¶¼¿ÉÓÃÓÚ½ø³Ì¼ä»òÏ̼߳äµÄͬ²½¡£

Á½¸ö½ø³ÌʹÓÃÒ»¸ö¶þÖµÐźÅÁ¿

Á½¸ö½ø³ÌËùÒÔÓÃÒ»¸öPosixÓÐÃû¶þÖµÐźÅÁ¿

Ò»¸ö½ø³ÌÁ½¸öÏ̹߳²Ïí»ùÓÚÄÚ´æµÄÐźÅÁ¿

ÐźÅÁ¿ÓëÆÕͨÕûÐͱäÁ¿µÄÇø±ð£º

£¨1£©ÐźÅÁ¿ÊǷǸºÕûÐͱäÁ¿£¬³ýÁ˳õʼ»¯Ö®Í⣬ËüÖ»ÄÜͨ¹ýÁ½¸ö±ê×¼Ô­×Ó²Ù×÷£ºwait(semap) , signal(semap) ; À´½øÐзÃÎÊ£»

£¨2£©²Ù×÷Ò²±»³ÉΪPVÔ­ÓPÀ´Ô´ÓÚºÉÀ¼Óïproberen"²âÊÔ"£¬VÀ´Ô´ÓÚºÉÀ¼Óïverhogen"Ôö¼Ó"£¬P±íʾͨ¹ýµÄÒâ˼£¬V±íʾÊͷŵÄÒâ˼£©£¬¶øÆÕͨÕûÐͱäÁ¿Ôò¿ÉÒÔÔÚÈκÎÓï¾ä¿éÖб»·ÃÎÊ£»ÐźÅÁ¿Ó뻥³âÁ¿Ö®¼äµÄÇø±ð£º

£¨1£©»¥³âÁ¿ÓÃÓÚÏ̵߳Ļ¥³â£¬ÐźÅÁ¿ÓÃÓÚÏ̵߳Äͬ²½¡£ÕâÊÇ»¥³âÁ¿ºÍÐźÅÁ¿µÄ¸ù±¾Çø±ð£¬Ò²¾ÍÊÇ»¥³âºÍͬ²½Ö®¼äµÄÇø±ð¡£

»¥³â£ºÊÇָijһ×ÊԴͬʱֻÔÊÐíÒ»¸ö·ÃÎÊÕß¶ÔÆä½øÐзÃÎÊ£¬¾ßÓÐΨһÐÔºÍÅÅËüÐÔ¡£µ«»¥³âÎÞ·¨ÏÞÖÆ·ÃÎÊÕß¶Ô×ÊÔ´µÄ·ÃÎÊ˳Ðò£¬¼´·ÃÎÊÊÇÎÞÐòµÄ¡£

ͬ²½£ºÊÇÖ¸ÔÚ»¥³âµÄ»ù´¡ÉÏ£¨´ó¶àÊýÇé¿ö£©£¬Í¨¹ýÆäËü»úÖÆÊµÏÖ·ÃÎÊÕß¶Ô×ÊÔ´µÄÓÐÐò·ÃÎÊ¡£

ÔÚ´ó¶àÊýÇé¿öÏ£¬Í¬²½ÒѾ­ÊµÏÖÁË»¥³â£¬ÌرðÊÇËùÓÐдÈë×ÊÔ´µÄÇé¿ö±Ø¶¨ÊÇ»¥³âµÄ¡£ÉÙÊýÇé¿öÊÇÖ¸¿ÉÒÔÔÊÐí¶à¸ö·ÃÎÊÕßͬʱ·ÃÎÊ×ÊÔ´

£¨2£©»¥³âÁ¿ÖµÖ»ÄÜΪ0/1£¬ÐźÅÁ¿Öµ¿ÉÒÔΪ·Ç¸ºÕûÊý¡£

Ò²¾ÍÊÇ˵£¬Ò»¸ö»¥³âÁ¿Ö»ÄÜÓÃÓÚÒ»¸ö×ÊÔ´µÄ»¥³â·ÃÎÊ£¬Ëü²»ÄÜʵÏÖ¶à¸ö×ÊÔ´µÄ¶àÏ̻߳¥³âÎÊÌâ¡£ÐźÅÁ¿¿ÉÒÔʵÏÖ¶à¸öͬÀà×ÊÔ´µÄ¶àÏ̻߳¥³âºÍͬ²½¡£µ±ÐźÅÁ¿Îªµ¥ÖµÐźÅÁ¿ÊÇ£¬Ò²¿ÉÒÔÍê³ÉÒ»¸ö×ÊÔ´µÄ»¥³â·ÃÎÊ¡£

£¨3£©»¥³âÁ¿µÄ¼ÓËøºÍ½âËø±ØÐëÓÉͬһÏ̷ֱ߳ð¶ÔӦʹÓã¬ÐźÅÁ¿¿ÉÒÔÓÉÒ»¸öÏß³ÌÊÍ·Å£¬ÁíÒ»¸öÏ̵߳õ½¡£

7. Ì×½Ó×Ö(socket)

Ì×½Ó×ÖÊÇÒ»ÖÖͨÐÅ»úÖÆ£¬Æ¾½èÕâÖÖ»úÖÆ£¬¿Í»§/·þÎñÆ÷£¨¼´Òª½øÐÐͨÐŵĽø³Ì£©ÏµÍ³µÄ¿ª·¢¹¤×÷¼È¿ÉÒÔÔÚ±¾µØµ¥»úÉϽøÐУ¬Ò²¿ÉÒÔ¿çÍøÂç½øÐС£Ò²¾ÍÊÇ˵Ëü¿ÉÒÔÈò»ÔÚͬһ̨¼ÆËã»úµ«Í¨¹ýÍøÂçÁ¬½Ó¼ÆËã»úÉϵĽø³Ì½øÐÐͨÐÅ¡£

SocketÊÇÓ¦ÓòãºÍ´«Êä²ãÖ®¼äµÄÇÅÁº

Ì×½Ó×ÖÊÇÖ§³ÖTCP/IPµÄÍøÂçͨÐŵĻù±¾²Ù×÷µ¥Ôª£¬¿ÉÒÔ¿´×öÊDz»Í¬Ö÷»úÖ®¼äµÄ½ø³Ì½øÐÐË«ÏòͨÐŵĶ˵㣬¼òµ¥µÄ˵¾ÍÊÇͨÐŵÄÁ½·½µÄÒ»ÖÖÔ¼¶¨£¬ÓÃÌ×½Ó×ÖÖеÄÏà¹Øº¯ÊýÀ´Íê³ÉͨÐŹý³Ì¡£

Ì×½Ó×ÖÌØÐÔ

Ì×½Ó×ÖµÄÌØÐÔÓÉ3¸öÊôÐÔÈ·¶¨£¬ËüÃÇ·Ö±ðÊÇ£ºÓò¡¢¶Ë¿ÚºÅ¡¢Ð­ÒéÀàÐÍ¡£

£¨1£©Ì×½Ó×ÖµÄÓò

ËüÖ¸¶¨Ì×½Ó×ÖͨÐÅÖÐʹÓõÄÍøÂç½éÖÊ£¬×î³£¼ûµÄÌ×½Ó×ÖÓòÓÐÁ½ÖÖ£º

Ò»ÊÇAF_INET£¬ËüÖ¸µÄÊÇInternetÍøÂç¡£µ±¿Í»§Ê¹ÓÃÌ×½Ó×Ö½øÐпçÍøÂçµÄÁ¬½Óʱ£¬Ëü¾ÍÐèÒªÓõ½·þÎñÆ÷¼ÆËã»úµÄIPµØÖ·ºÍ¶Ë¿ÚÀ´Ö¸¶¨Ò»Ì¨ÁªÍø»úÆ÷ÉϵÄij¸öÌØ¶¨·þÎñ£¬ËùÒÔÔÚʹÓÃsocket×÷ΪͨÐŵÄÖյ㣬·þÎñÆ÷Ó¦ÓóÌÐò±ØÐëÔÚ¿ªÊ¼Í¨ÐÅ֮ǰ°ó¶¨Ò»¸ö¶Ë¿Ú£¬·þÎñÆ÷ÔÚÖ¸¶¨µÄ¶Ë¿ÚµÈ´ý¿Í»§µÄÁ¬½Ó¡£

ÁíÒ»¸öÓòAF_UNIX£¬±íʾUNIXÎļþϵͳ£¬Ëü¾ÍÊÇÎļþÊäÈë/Êä³ö£¬¶øËüµÄµØÖ·¾ÍÊÇÎļþÃû¡£

£¨2£©Ì×½Ó×ֵĶ˿ںÅ

ÿһ¸ö»ùÓÚTCP/IPÍøÂçͨѶµÄ³ÌÐò(½ø³Ì)¶¼±»¸³ÓèÁËΨһµÄ¶Ë¿ÚºÍ¶Ë¿ÚºÅ£¬¶Ë¿ÚÊÇÒ»¸öÐÅÏ¢»º³åÇø£¬ÓÃÓÚ±£ÁôSocketÖеÄÊäÈë/Êä³öÐÅÏ¢£¬¶Ë¿ÚºÅÊÇÒ»¸ö16λÎÞ·ûºÅÕûÊý£¬·¶Î§ÊÇ0-65535£¬ÒÔÇø±ðÖ÷»úÉϵÄÿһ¸ö³ÌÐò£¨¶Ë¿ÚºÅ¾ÍÏñ·¿ÎÝÖеķ¿¼äºÅ£©£¬µÍÓÚ256µÄ¶Ë¿ÚºÅ±£Áô¸ø±ê×¼Ó¦ÓóÌÐò£¬±ÈÈçpop3µÄ¶Ë¿ÚºÅ¾ÍÊÇ110£¬Ã¿Ò»¸öÌ×½Ó×Ö¶¼×éºÏ½øÁËIPµØÖ·¡¢¶Ë¿Ú£¬ÕâÑùÐγɵÄÕûÌå¾Í¿ÉÒÔÇø±ðÿһ¸öÌ×½Ó×Ö¡£

£¨3£©Ì×½Ó×ÖЭÒéÀàÐÍ

ÒòÌØÍøÌṩÈýÖÖͨÐÅ»úÖÆ£¬

Ò»ÊÇÁ÷Ì×½Ó×Ö£¬Á÷Ì×½Ó×ÖÔÚÓòÖÐͨ¹ýTCP/IPÁ¬½ÓʵÏÖ£¬Í¬Ê±Ò²ÊÇAF_UNIXÖг£ÓõÄÌ×½Ó×ÖÀàÐÍ¡£Á÷Ì×½Ó×ÖÌṩµÄÊÇÒ»¸öÓÐÐò¡¢¿É¿¿¡¢Ë«Ïò×Ö½ÚÁ÷µÄÁ¬½Ó£¬Òò´Ë·¢Ë͵ÄÊý¾Ý¿ÉÒÔÈ·±£²»»á¶ªÊ§¡¢Öظ´»òÂÒÐòµ½´ï£¬¶øÇÒËü»¹ÓÐÒ»¶¨µÄ³ö´íºóÖØÐ·¢Ë͵ĻúÖÆ¡£

¶þ¸öÊÇÊý¾Ý±¨Ì×½Ó×Ö£¬Ëü²»ÐèÒª½¨Á¢Á¬½ÓºÍά³ÖÒ»¸öÁ¬½Ó£¬ËüÃÇÔÚÓòÖÐͨ³£ÊÇͨ¹ýUDP/IPЭÒéʵÏֵġ£Ëü¶Ô¿ÉÒÔ·¢Ë͵ÄÊý¾ÝµÄ³¤¶ÈÓÐÏÞÖÆ£¬Êý¾Ý±¨×÷Ϊһ¸öµ¥¶ÀµÄÍøÂçÏûÏ¢±»´«Êä,Ëü¿ÉÄܻᶪʧ¡¢¸´ÖÆ»ò´íÂÒµ½´ï£¬UDP²»ÊÇÒ»¸ö¿É¿¿µÄЭÒ飬µ«ÊÇËüµÄËٶȱȽϸߣ¬ÒòΪËü²¢Ò»ÐèÒª×ÜÊÇÒª½¨Á¢ºÍά³ÖÒ»¸öÁ¬½Ó¡£

ÈýÊÇԭʼÌ×½Ó×Ö£¬Ô­Ê¼Ì×½Ó×ÖÔÊÐí¶Ô½ÏµÍ²ã´ÎµÄЭÒéÖ±½Ó·ÃÎÊ£¬±ÈÈçIP¡¢ ICMPЭÒ飬Ëü³£ÓÃÓÚ¼ìÑéеÄЭÒéʵÏÖ£¬»òÕß·ÃÎÊÏÖÓзþÎñÖÐÅäÖõÄÐÂÉ豸£¬ÒòΪRAW SOCKET¿ÉÒÔ×ÔÈçµØ¿ØÖÆWindowsϵĶàÖÖЭÒ飬Äܹ»¶ÔÍøÂçµ×²ãµÄ´«Êä»úÖÆ½øÐпØÖÆ£¬ËùÒÔ¿ÉÒÔÓ¦ÓÃԭʼÌ×½Ó×ÖÀ´²Ù×ÝÍøÂç²ãºÍ´«Êä²ãÓ¦ÓᣱÈÈ磬ÎÒÃÇ¿ÉÒÔͨ¹ýRAW SOCKETÀ´½ÓÊÕ·¢Ïò±¾»úµÄICMP¡¢IGMPЭÒé°ü£¬»òÕß½ÓÊÕTCP/IPÕ»²»Äܹ»´¦ÀíµÄIP°ü£¬Ò²¿ÉÒÔÓÃÀ´·¢ËÍһЩ×Ô¶¨°üÍ·»ò×Ô¶¨Ð­ÒéµÄIP°ü¡£ÍøÂç¼àÌý¼¼ÊõºÜ´ó³Ì¶ÈÉÏÒÀÀµÓÚSOCKET_RAW¡£

ԭʼÌ×½Ó×ÖÓë±ê×¼Ì×½Ó×ÖµÄÇø±ðÔÚÓÚ£º

ԭʼÌ×½Ó×Ö¿ÉÒÔ¶ÁдÄÚºËûÓд¦ÀíµÄIPÊý¾Ý°ü£¬¶øÁ÷Ì×½Ó×ÖÖ»ÄܶÁÈ¡TCPЭÒéµÄÊý¾Ý£¬Êý¾Ý±¨Ì×½Ó×ÖÖ»ÄܶÁÈ¡UDPЭÒéµÄÊý¾Ý¡£Òò´Ë£¬Èç¹ûÒª·ÃÎÊÆäËûЭÒé·¢ËÍÊý¾Ý±ØÐëʹÓÃԭʼÌ×½Ó×Ö¡£

Ì×½Ó×ÖͨÐŵĽ¨Á¢

SocketͨÐÅ»ù±¾Á÷³Ì

** ·þÎñÆ÷¶Ë**

£¨1£©Ê×ÏÈ·þÎñÆ÷Ó¦ÓóÌÐòÓÃϵͳµ÷ÓÃsocketÀ´´´½¨Ò»¸öÌ×½Ó×Ö£¬ËüÊÇϵͳ·ÖÅ䏸¸Ã·þÎñÆ÷½ø³ÌµÄÀàËÆÎļþÃèÊö·ûµÄ×ÊÔ´£¬Ëü²»ÄÜÓëÆäËûµÄ½ø³Ì¹²Ïí¡£

£¨2£©È»ºó£¬·þÎñÆ÷½ø³Ì»á¸øÌ×½Ó×ÖÆð¸öÃû×Ö£¬ÎÒÃÇʹÓÃϵͳµ÷ÓÃbindÀ´¸øÌ×½Ó×ÖÃüÃû¡£È»ºó·þÎñÆ÷½ø³Ì¾Í¿ªÊ¼µÈ´ý¿Í»§Á¬½Óµ½Õâ¸öÌ×½Ó×Ö¡£

£¨3£©½ÓÏÂÀ´£¬ÏµÍ³µ÷ÓÃlistenÀ´´´½¨Ò»¸ö¶ÓÁв¢½«ÆäÓÃÓÚ´æ·ÅÀ´×Ô¿Í»§µÄ½øÈëÁ¬½Ó¡£

£¨4£©×îºó£¬·þÎñÆ÷ͨ¹ýϵͳµ÷ÓÃacceptÀ´½ÓÊܿͻ§µÄÁ¬½Ó¡£Ëü»á´´½¨Ò»¸öÓëÔ­ÓеÄÃüÃûÌ×½Ó²»Í¬µÄÐÂÌ×½Ó×Ö£¬Õâ¸öÌ×½Ó×ÖÖ»ÓÃÓÚÓëÕâ¸öÌØ¶¨¿Í»§¶Ë½øÐÐͨÐÅ£¬¶øÃüÃûÌ×½Ó×Ö£¨¼´Ô­ÏȵÄÌ×½Ó×Ö£©Ôò±»±£ÁôÏÂÀ´¼ÌÐø´¦ÀíÀ´×ÔÆäËû¿Í»§µÄÁ¬½Ó£¨½¨Á¢¿Í»§¶ËºÍ·þÎñ¶ËµÄÓÃÓÚͨÐŵÄÁ÷£¬½øÐÐͨÐÅ£©¡£

¿Í»§¶Ë

£¨1£©¿Í»§Ó¦ÓóÌÐòÊ×Ïȵ÷ÓÃsocketÀ´´´½¨Ò»¸öδÃüÃûµÄÌ×½Ó×Ö£¬È»ºó½«·þÎñÆ÷µÄÃüÃûÌ×½Ó×Ö×÷Ϊһ¸öµØÖ·À´µ÷ÓÃconnectÓë·þÎñÆ÷½¨Á¢Á¬½Ó¡£

£¨2£©Ò»µ©Á¬½Ó½¨Á¢£¬ÎÒÃǾͿÉÒÔÏñʹÓõײãµÄÎļþÃèÊö·ûÄÇÑùÓÃÌ×½Ó×ÖÀ´ÊµÏÖË«ÏòÊý¾ÝµÄͨÐÅ£¨Í¨¹ýÁ÷½øÐÐÊý¾Ý´«Ê䣩¡£

 
   
2648 ´Îä¯ÀÀ       27
 
Ïà¹ØÎÄÕÂ

ÔÆ¼ÆËãµÄ¼Ü¹¹
¶ÔÔÆ¼ÆËã·þÎñÄ£ÐÍ
ÔÆ¼ÆËãºËÐļ¼ÊõÆÊÎö
Á˽âÔÆ¼ÆËãµÄ©¶´
 
Ïà¹ØÎĵµ

ÔÆ¼ÆËã¼ò½é
ÔÆ¼ÆËã¼ò½éÓëÔÆ°²È«
ÏÂÒ»´úÍøÂç¼ÆËã--ÔÆ¼ÆËã
ÈídzÎöÔÆ¼ÆËã
 
Ïà¹Ø¿Î³Ì

ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ
ÔÆ¼ÆËãÓ¦ÓÃÓ뿪·¢
CMMIÌåϵÓëʵ¼ù
»ùÓÚCMMI±ê×¼µÄÈí¼þÖÊÁ¿±£Ö¤