BBSˮľÇ廪վ¡Ã¾«»ªÇø

·¢ÐÅÈË: forest (ÇẮС¥~~С¼ªÆª), ÐÅÇø: Unix        
±ê  Ìâ: [×ªÔØ]unix»·¾³¸ß¼¶±à³Ì-10 (×ªÔØ) 
·¢ÐÅÕ¾: BBS Ë®Ä¾Ç廪վ (Fri Mar 17 17:51:24 2000) 
 
¡¾ ÒÔÏÂÎÄ×Ö×ªÔØ×Ô Linux ÌÖÂÛÇø ¡¿ 
¡¾ Ô­ÎÄÓÉ SuperSB Ëù·¢±í ¡¿ 
 
 
 
·¢ÐÅÈË: taosm (128+64-->cool), ÐÅÇø: unix  
±ê  Ìâ: unix»·¾³¸ß¼¶±à³Ì--µÚ10Õ ÐźŠ 
·¢ÐÅÕ¾: Î÷Ê®°ËBBS (Sat Mar 11 13:31:28 2000), ×ªÐÅ  
   
µÚʮգºÐźŪ¥  
10ª±1¡þÒýÑÔª¥  
ÐźÅÊÇÈí¼þÖжϡ£ºÜ¶à±È½ÏÖØÒªµÄÓ¦ÓóÌÐò¶¼Ðè´¦ÀíÐźš£ÐźÅÌṩÁËÒ»ÖÖ´¦ÀíÒì  
²½Ê¼þµÄ·½·¨£ºÖÕ¶ËÓû§¼üÈëÖжϼü£¬Ôò»áͨ¹ýÐźŻú¹¹Í£Ö¹Ò»µÀ³ÌÐò.UnixµÄÔçÆÚ  
°æ±¾£¬¾ÍÒѾ­ÓÐÐźŻú¹¹£¬µ«ÊÇÕâЩϵͳ£¬ÀýÈçVersion 7ËùÌṩµÄÐźÅÄ£ÐͲ¢²»¿É  
¿¿¡£ÐźſÉÄܱ»¶ªÊ§£¬¶øÇÒÔÚÖ´ÐÐÁÙ½çÇø´úÂëʱ£¬½ø³ÌÄÑÓڹرÕËùÑ¡ÔñµÄÐźÅ.  
4.3BSDºÍSVR3¶ÔÐźÅÄ£ÐͶ¼×÷Á˸ü¸Ä£¬Ôö¼ÓÁ˿ɿ¿ÐźŻúÖÆ¡£µ«ÊÇÕâÁ½ÖÖ¸ü¸ÄÖ®¼ä²¢  
²»¼æÈÝ¡£ÐÒÔ˵ÄÊÇPOSIX.1¶Ô¿É¿¿ÐźÅÀý³Ì½øÐÐÁ˱ê×¼»¯£¬ÕâÕýÊDZ¾ÕÂËù˵Ã÷µÄ.±¾Õ  
ÏȶÔÐźŻúÖÆ½øÐÐ×ÛÊö£¬²¢ËµÃ÷ÿÖÖÐźŵÄÒ»°ãÓ÷¨¡£È»ºó·ÖÎöÔçÆÚʵÏÖµÄÎÊÌâ¡£ÔÚ  
·ÖÎö´æÔÚµÄÎÊÌâÖ®ºóÔÙ˵Ã÷½â¾öÕâЩÎÊÌâµÄ·½·¨£¬ÕâÑùÓÐÖúÓÚ¼ÓÉî¶Ô¸Ä½ø»úÖÆµÄÀí½â.  
±¾ÕÂÒ²°üº¬Á˺ܶಢ·Ç100%ÕýÈ·µÄʵÀý£¬ÕâÑù×öµÄÄ¿µÄÊÇΪÁË¶ÔÆä²»¶¨Ö®´¦½øÐÐÌÖÂÛ¡£ª¥  
   
10ª±2¡þÐźŵĸÅÄ  
Ê×ÏÈ£¬Ã¿¸öÐźÅÓÐÒ»¸öÃû×Ö¡£ÕâЩÃû×Ö¶¼ÒÔÈý¸ö×Ö·ûSIG¿ªÍ·¡£ÀýÈ磬SIGABRTÊÇØ²ÕÛ  
Ðźţ¬µ±½ø³Ìµ÷ÓÃabortº¯Êýʱ²úÉúÕâÖÖÐźš£SIGALRMÊÇÄÖÖÓÐźţ¬µ±ÓÉalarmº¯ÊýÉè  
ÖõÄʱ¼äÒѾ­³¬¹ýºó²úÉú´ËÐźš£Version7ÓÐÊ®ÎåÖÖ²»Í¬µÄÐźţ»SVR4ºÍ4.3BSDÁ½Õß  
¶¼ÓÐ31ÖÖ²»Í¬µÄÐźš£ª¥  
ÔÚÍ·Îļþ<signal.h>ÖУ¬ÕâЩÐźŶ¼±»¶¨ÒåΪÕýÕûÊý(ÐźűàºÅ)¡£Ã»ÓÐÒ»¸öÐÅºÅÆä±à  
ºÅΪ0.ÔÚ10.9½ÚÖÐÎÒÃǽ«»á¿´µ½killº¯Êý£¬¶ÔÐźűàºÅ0ÓÐÌØÊâµÄÓ¦Óá£POSIX.1½«´Ë  
ÖÖÐźűàºÅÖµ³ÆÎª¶¨Ðźš£ºÜ¶àÌõ¼þ¿ÉÒÔ²úÉúÒ»¸öÐźš£ª¥  
¡¤µ±Óû§°´Ä³Ð©Öն˼üʱ£¬²úÉúÐźš£ÔÚÖÕ¶ËÉϰ´DELETE¼üͨ³£²úÉúÖжÏÐźÅ(SIGINT).  
  ÕâÊÇÍ£Ö¹Ò»µÀÒÑʧȥ¿ØÖƳÌÐòµÄ·½·¨¡£(µÚʮһÕÂÖн«ËµÃ÷´ËÐźſɱ»Ó³ÕÕΪÖÕ¶ËÉÏ  
  µÄÈÎÒ»×Ö·û)¡£ª¥  
¡¤Ó²¼þÒì³£²úÉúÐźţº³ýÊýΪ0£¬ÎÞЧµÄ´æ´¢·ÃÎʵȵȡ£ÕâЩÌõ¼þͨ³£ÊÇÓÉÓ²¼þ¼ì²âµ½µÄ  
  ²¢½«Æä֪ͨϵͳºË¡£È»ºóϵͳºËΪ¸ÃÌõ¼þ·¢ÉúʱÕýÔÚÔËÐеĽø³Ì²úÉúÊʵ±µÄÐźš£  
  ÀýÈ磬¶ÔÖ´ÐÐÒ»¸öÎÞЧ´æ´¢·ÃÎʵĽø³Ì²úÉúÒ»¸öSIGSEGV¡£ª¥  
¡¤½ø³ÌÓÃkill(2)º¯Êý¿É½«Ðźŷ¢Ë͸øÁíÒ»¸ö½ø³Ì»ò½ø³Ì×é¡£×ÔÈ»£¬ÓÐЩÏÞÖÆ£º½ÓÊÕÐźŠ 
  ½ø³ÌºÍ·¢ËÍÐźŽø³ÌµÄÊôÖ÷±ØÐëÏàͬ£¬»ò·¢ËÍÐźŽø³ÌµÄÊôÖ÷±ØÐëÊdz¬¼¶Óû§¡£ª¥  
¡¤Óû§¿ÉÓÃkill(1)ÃüÁÐźŷ¢Ë͸øÆäËü½ø³Ì¡£´Ë³ÌÐòÊÇkillº¯ÊýµÄ½çÃæ¡£³£ÓôËÃüÁî  
  ÖÕÖ¹Ò»¸öʧ¿ØµÄºǫ́½ø³Ì¡£ª¥  
¡¤µ±¼ì²âµ½Ä³ÖÖÈí¼þÌõ¼þÒѾ­·¢Éú£¬²¢Ó¦½«Æä֪ͨÓйؽø³ÌʱҲ²úÉúÐźš£ÀýÈçSIGURG  
  (ÔÚÍøÂçÁ¬½ÓÉÏ´«À´·Ç¹æ¶¨²¨ÌØÂʵÄÊý¾Ý)¡¢SIGPIPE(ÔڹܵÀµÄ¶Á½ø³ÌÒÑÖÕÖ¹ºóÒ»¸ö½ø  
  ³Ìд´Ë¹ÜµÀ)£¬ÒÔ¼°SIGALRM(½ø³ÌËùÉèÖõÄÄÖÖÓʱ¼äÒѾ­³¬Ê±)¡£ª¥  
  ÐźÅÊÇÒ첽ʼþµÄ¾­µäʵÀý¡£²úÉúÐźŵÄʼþ¶Ô½ø³Ì¶øÑÔÊÇÔÚËæ»úʱ¼ä³öÏֵġ£½ø³Ì  
²»ÄÜÖ»ÊDzâÊÔÒ»¸ö±äÁ¿(ÀýÈçerrno)À´ÅбðÊÇ·ñ·¢ÉúÁËÒ»¸öÐźţ¬´úÖ®ÒÔ½ø³Ì±ØÐë¸æËßϵ  
ͳºË"ÔÚ´ËÐźŷ¢Éúʱ£¬ÇëÖ´ÐÐÏÂÁвÙ×÷"¡£¿ÉÒÔÒªÇóϵͳÔÚij¸öÐźųöÏÖʱ°´ÕÕÏÂÁÐÈýÖÖ  
·½Ê½ÖеÄÒ»ÖÖ½øÐвÙ×÷¡£ª¥  
1.ºöÂÔ´ËÐźš£´ó¶àÊýÐźŶ¼¿ÉʹÓÃÕâÖÖ·½Ê½½øÐд¦Àí£¬µ«ÓÐÁ½ÖÖÐźÅÈ´¾ö²»Äܱ»ºöÂÔ¡£  
ËüÃÇÊÇ£ºSIGKILLºÍSIGSTOP¡£ÕâÁ½ÖÖÐźŲ»Äܱ»ºöÂÔµÄÔ­ÒòÊÇ£ºËüÃÇÏò³¬¼¶Óû§ÌṩһÖÖ  
ʹ½ø³ÌÖÕÖ¹(killing)»òÍ£Ö¹µÄ¿É¿¿·½·¨¡£ÁíÍ⣬Èç¹ûºöÂÔijЩÓÉÓ²¼þÒì³£²úÉúµÄÐźÅ(Àý  
Èç·Ç·¨´æ´¢·ÃÎÊ»ò³ýÒÔ0)£¬Ôò½ø³ÌµÄÐÐΪÊÇÄ©¶¨ÒåµÄ¡£ª¥  
2.²¶×½Ðźš£ÎªÁË×öµ½ÕâÒ»µãҪ֪ͨϵͳºËÔÚijÖÖÐźŷ¢Éúʱ£¬Òªµ÷ÓÃÒ»¸öÓû§º¯Êý¡£ÔÚ  
Óû§º¯ÊýÖУ¬¿ÉÖ´ÐÐÓû§Ï£Íû¶ÔÕâÖÖʼþ½øÐеĴ¦Àí¡£ÀýÈç,ÈôÎÒÃDZàдһ¸öÃüÁî½âÊÍÆ÷,  
µ±Óû§ÓüüÅ̲úÉúÖжÏÐźÅʱ£¬ÎÒÃǺܿÉÄÜÏ£Íû·µ»Øµ½³ÌÐòµÄÖ÷Ñ­»·£¬ÖÕֹϵͳÕýÔÚΪ¸Ã  
Óû§Ö´ÐеÄÃüÁî¡£Èç¹û²¶×½µ½SIGCHLDÐźţ¬Ôò±íʾ×Ó½ø³ÌÒѾ­ÖÕÖ¹£¬ËùÒÔ´ËÐźŵIJ¶×½  
º¯Êý¿ÉÒÔµ÷ÓÃWaitpidÒÔÈ¡µÃ¸Ã×Ó½ø³ÌµÄ½ø³ÌIDÒÔ¼°ËüµÄÖÕֹ״̬¡£ÓÖÀýÈ磬Èç¹û½ø³Ì´´  
½¨ÁËÁÙʱÎļþ£¬ÄÇôÎÒÃÇ¿ÉÄÜҪΪSIGTERMº¯Êý±àдһ¸öÐźŲ¶×½º¯ÊýÒÔÇå³ýÁÙʱÎļþ  
(killÃüÁî´«Ë͵ÄϵͳĬÈÏÐźÅÊÇÖÕÖ¹Ðźš£)ª¥  
3.Ö´ÐÐϵͳĬÈ϶¯×÷¡£ÔÚͼ10.1ÖÐʾ³öÁ˶ÔÿһÖÖÐźŵÄϵͳĬÈ϶¯×÷¡£×¢Ò⣬¶Ô´ó¶àÊý  
ÐźŵÄϵͳĬÈ϶¯×÷ÊÇÖÕÖ¹¸Ã½ø³Ì¡£Í¼10.1ÁгöËùÓÐÐźŵÄÃû×Ö£¬ÄÄЩϵͳ֧³Ö´ËÐźÅÒÔ  
¼°¶ÔÓÚÐźŵÄϵͳĬÈ϶¯×÷¡£ÔÚPOSIX.1ÁС£±íʾҪÇó´ËÖÖÐźš£job±íʾÕâÊÇ×÷Òµ¿ØÖÆÐÅ  
ºÅ(½öµ±Ö§³Ö×÷Òµ¿ØÖÆÊ±£¬²ÅÒªÇó´ËÖÖÐźÅ)¡£ª¥  
ÔÚϵͳĬÈ϶¯×÷ÁУ¬"ÖÕÖ¹w£¯core"±íʾÔÚ½ø³Ìµ±Ç°¹¤×÷Ŀ¼µÄCoreÎļþÖи´ÖÆÁ˸ýø³Ì  
µÄ´æ´¢Í¼Ïó¡£(¸ÃÎļþÃûΪcore,´Ó´Ë¿ÉÒÔ¿´³öÕâÖÖ¹¦ÄܾܺÃ֮ǰ¾ÍÊÇUnix¹¦ÄܵÄÒ»²¿·Ö).  
´ó¶àÊýUnixµ÷ÊÔ³ÌÐò¶¼Ê¹ÓÃcoreÎļþÒÔ¼ì²é½ø³ÌÔÚÖÕֹʱµÄ״̬¡£ÔÚÏÂÁÐÌõ¼þϲ»²úÉú  
coreÎļþ:(a)½ø³ÌÊÇÉèÖÃ-Óû§-IDµÄ£¬¶øÇÒµ±Ç°Óû§²¢·ÇÊdzÌÐòÎļþµÄÊôÖ÷£¬»òÕß(b)½ø  
³ÌÊÇÉèÖÃÒ»×é-IDµÄ£¬¶øÇÒµ±Ç°Óû§²¢·ÇÊǸóÌÐòÎļþµÄ×éÊôÖ÷£¬»òÕß(C)Óû§Ã»ÓÐдµ±  
ǰ¹¤×÷Ŀ¼µÄÐí¿ÉȨ£¬»òÕß(d)ÎļþÌ«´ó(»ØÒä7.11½ÚÖеÄRLIMIT-CORE)¡£coreÎļþµÄÐí  
¿ÉȨ(¼Ù¶¨¸ÃÎļþÔÚ´Ë֮ǰ²¢²»´æÔÚ)ͨ³£ÊÇÓû§¶Á£¯Ð´£¬×é¶ÁºÍÆäËü¶Á.coreÎļþµÄ²úÉú  
²»ÊÇPOSIX.1ËùÊô²¿·Ö£¬¶øÊǺܶàUnix°æ±¾µÄʵÏÖÌØÕ÷¡£4.3+BSD²úÉúÃûΪcore.progµÄÎÄ  
¼þ£¬ÆäÖÐprogÊDZ»Ö´ÐеijÌÐòÃûµÄǰ16¸ö×Ö·û¡£Ëü¶ÔcoreÎļþ¸øÓèÁËijÖÖ±êʶ£¬ËùÒÔÊÇ  
Ò»ÖָĽøÌØÖ¤¡£ÔÚͼ10.1ÖеÄ˵Ã÷ÁУ¬"Ó²¼þ¹ÊÕÏ"¶ÔÓ¦ÓÚʵÏÖ¶¨ÒåµÄÓ²¼þ¹ÊÕÏ¡£ÕâЩÃû  
×ÖÖÐÓкܶàÈ¡×ÔÓÚUnixÔçÏÈÔÚPPP-11ÉϵÄʵÏÖ¡£Çë²é¿´ÄãËùʹÓõÄϵͳµÄÊֲᣬÒÔÈ·ÇР 
µØÈ·¶¨ÕâЩÐźŶÔÓ¦ÓÚÄÄЩ´íÎóÀàÐÍ¡£ª¥  
                          Í¼10.1 UnixÐźŪ¥  
ÏÂÃæ±È½ÏÏêϸµØËµÃ÷ÕâЩÐźš£ª¥  
SIGABRT µ÷ÓÃabortº¯Êýʱ(10ª±17½Ú)²úÉú´ËÐźš£¸Ã½ø³ÌÒì³£ÖÕÖ¹¡£ª¥  
SIGALRM µ÷ÓÃalarmº¯ÊýʱÉèÖõÄʱ¼äÒѾ­³¬¹ý.ÏêϸÇé¿ö¼û10.10½Ú.¿´ÓÉsetitimer(2)  
        º¯ÊýÉèÖõļä¸ôʱ¼äÒѾ­¹ýʱ£¬ÄÇôҲ²úÉú´ËÐźš£ª¥  
SIGBUS Õâָʾһ¸öʵÏÖ¶¨ÒåµÄÓ²¼þ¹ÊÕÏ¡£ª¥  
SIGCHLD ÔÚÒ»¸ö½ø³ÌÖÕÖ¹»òֹͣʱ£¬SIGCHLDÐźű»Ë͸øÆä¸¸½ø³Ì¡£°´ÏµÍ³Ä¬ÈÏ£¬½«ºöÂÔ  
        ´ËÐźš£Èç¹û¸¸½ø³ÌÏ£ÍûÁ˽âÆä×Ó½ø³ÌµÄÕâÖÖ״̬¸Ä±ä£¬ÔòÓ¦²¶×½´ËÐźš£ÐÅ  
        ºÅ²¶×½º¯ÊýÖÐͨ³£Òªµ÷ÓÃwaitº¯ÊýÒÔÈ¡µÃ×Ó½ø³ÌIDºÍÆäÖÕֹ״̬¡£ÏµÍ³VµÄÔçÆÚ  
        °æ±¾ÓÐÒ»¸öÃûΪSIGCLD(ÎÞH)µÄÀàËÆÐźš£ÕâÒ»ÐźžßÓзDZê×¼µÄÓïÒ壬ÔÚSVR2  
        µÄÊÖ²áÒ³¾Í¾¯¸æÔÚеijÌÐòÖо¡Á¿Ð¡ÒªÊ¹ÓÃÕâÖÖÐźš£Ó¦ÓóÌÐòÓ¦µ±Ê¹Óñê×¼µÄ  
        SIGCHLDÐźš£ÔÚ10.7½ÚÖÐÌÖÂÛÕâÁ½¸öÐźš£ª¥  
SIGCONT ´Ë×÷Òµ¿ØÖÆÐźÅË͸øÐèÒªÆä¼ÌÐøÔËÐеĴ¦ÓÚֹͣ״̬µÄ½ø³Ì¡£Èç¹û½ÓÊÕµ½´ËÐźŠ 
        µÄ½ø³Ì´¦ÓÚֹͣ״̬£¬ÔòϵͳĬÈ϶¯×÷ÊÇʹ¸Ã½ø³Ì¼ÌÐøÔËÐУ¬·ñÔòĬÈ϶¯×÷ÊǺö  
        ÂÔ´ËÐźš£ÀýÈ磬vi±à¼­³ÌÐòÔÚ²¶×½µ½´ËÐźźó£¬ÖØ»­ÖÕ¶ËÆÁÄ»¡£¹ØÓÚ½øÒ»²½µÄ  
        Çé¿ö¼û10ª±20½Ú¡£ª¥  
SIGEMT Õâָʾһ¸öʵÏÖ¶¨ÒåµÄÓ²¼þ¹ÊÕÏ¡£ª¥  
SIGFPE ´ËÐźűíʾһ¸öËãÊõÔËËãÒì³££¬ÀýÈç³ýÒÔ0£¬¸¡µãÒç³öµÈ¡£ª¥  
SIGHUP Èç¹ûÖն˽çÃæ¼ì²âµ½Ò»¸öÁ¬½Ó¶Ï¿ª£¬Ôò½«´ËÐźÅË͸øÓë¸ÃÖÕ¶ËÏà¹ØµÄ¿ØÖƽø³Ì(¶Ô  
       »°ÆÚÊ×½ø³Ì)¡£²Î¼ûͼ9.11£¬´ËÐźÅË͸øsession½á¹¹ÖÐs-leader×Ö¶ÎËùÖ¸ÏòµÄ½ø  
       ³Ì¡£½öµ±Öն˵ÄCLOCAL±ê־ûÓÐÉèÖÃʱ£¬ÔÚÉÏÊöÌõ¼þϲŲúÉú´ËÐźš£(Èç¹ûËùÁ¬  
       ½ÓµÄÖÕ¶ËÊDZ¾µØµÄ£¬²ÅÉèÖøÃÖն˵ÄCLOCAL±êÖ¾¡£Ëü¸æËßÖÕ¶ËÇý¶¯³ÌÐòºöÂÔËùÓР 
       µ÷ÖÆ½âµ÷Æ÷µÄ״̬ÐС£ÔÚµÚʮһÕ½«ËµÃ÷ÈçºÎÉèÖô˱êÖ¾)×¢Ò⣬½Óµ½´ËÐźŵĠ 
       ¶Ô»°ÆÚÊ×½ø³Ì¿ÉÄÜÔÚºǫ́£¬×÷Ϊһ¸öÀý×Ó¼ûͼ9ª±7¡£ÕâÇø±ðÓÚͨ³£ÓÉÖն˲úÉúµÄ  
       ÐźÅ(Öжϡ¢Í˳öºÍ¹ÒÆð)£¬ÕâЩÐźÅ×ÜÊÇ´«µÝ¸øÇ°Ì¨½ø³Ì×é¡£Èç¹û¶Ô»°ÆÚǰ½ø³Ì  
       ÖÕÖ¹£¬ÔòÒ²²úÉú´ËÐźš£ÔÚÕâÖÖÇé¿ö£¬´ËÐźÅË͸øÇ°Ì¨½ø³Ì×éÖеÄÿһ¸ö½ø³Ì¡£ª¥  
       Í¨³£ÓôËÐźÅ֪ͨ¾«Áé½ø³Ì(µÚÊ®ÈýÕÂ)ÒÔÔÙ¶ÁËüÃǵÄÅäÖÃÎļþ¡£Îª´ËÑ¡ÓÃSIGHUP  
       µÄÀíÓÉÊÇ£¬ÒòΪһ¸ö¾«Áé½ø³Ì²»»áÓÐÒ»¸ö¿ØÖÆÖÕ¶Ë£¬¶øÇÒͨ³£¾ö²»»á½ÓÊÕµ½ÕâÖÖ  
       Ðźš£SIGKILL ´ËÐźÅָʾ½ø³ÌÒÑÖ´ÐÐÒ»Ìõ·Ç·¨Ó²¼þÖ¸Áî¡£4.3BSDÓÉabortº¯Êý²ú  
       Éú´ËÐźš£SIGABRTÏÖÔÚÓÃÓÚÕâÖÖÇé¿ö¡£ª¥  
SIGINFO ÕâÊÇÒ»ÖÖ4.3+BSDÐźţ¬µ±Óû§°´×´Ì¬¼ü(³£³£ÊÇControl-T)ʱ£¬ÖÕ¶ËÇý¶¯³ÌÐò²ú  
        Éú´ËÐźŲ¢ËÍÖÁǰ̨½ø³Ì×éÖеÄÿһ¸ö½ø³Ì(¼ûͼ9ª±8)¡£´ËÐźÅͨ³£Ôì³ÉÔÚÖÕ  
        ¶ËÉÏÏÔʾǰ̨½ø³Ì×éÖи÷½ø³ÌµÄ״̬ÐÅÏ¢¡£ª¥  
SIGINT µ±Óû§°´Öжϼü(³£³£ÊÇDELETE»òControl-C)ʱ£¬ÖÕ¶ËÇý¶¯³ÌÐò²úÉú´ËÐźŠ 
       ²¢ËÍÖÁǰ̨½ø³Ì×éÖеÄÿһ¸ö½ø³Ì(¼ûͼ9ª±8)¡£µ±Ò»¸ö½ø³ÌÔÚÔËÐÐʱʧ¿Ø£¬Ìرð  
       ÊÇËüÕýÔÚÆÁÄ»ÉϲúÉú´óÁ¿²»ÐèÒªµÄÊä³öʱ£¬³£ÓôËÐźÅÖÕÖ¹Ëü¡£ª¥  
SIGIO ´ËÐźÅָʾһ¸öÒì²½I£¯Oʼþ¡£ÔÚ12.6.2Öн«¶Ô´Ë½øÐÐÌÖÂÛ¡£ÔÚͼ10.1ÖÐ,¶ÔSIGIO  
      µÄϵͳĬÈ϶¯×÷ÊÇÖÕÖ¹»òºöÂÔ.²»ÐÒµÄÊÇ,ÕâÒÀÀµÓÚϵͳ.ÔÚSVR4ÖÐ,SIGIOÓëSIGPOLL  
      Ïàͬ£¬ÆäĬÈ϶¯×÷ÊÇÖÕÖ¹´Ë½ø³Ì¡£ÔÚ4ª±3+BSDÖÐ(´ËÐÅºÅÆðÔ´ÓÚ4.2BSD)£¬ÆäĬÈ϶¯  
      ×÷ÊǺöÂÔËü¡£ª¥  
SIGIOT Õâָʾһ¸öʵÏÖ¶¨ÒåµÄÓ²¼þ¹ÊÕÏ¡£IOTÕâ¸öÃû×ÖÀ´×ÔÓÚPPP-11¶ÔÓÚÊäÈ룯Êä³öTRAP  
       (input£¯output TRAP)Ö¸ÁîµÄËõд¡£ÏµÍ³VµÄÔçÆÚ°æ±¾£¬ÓÉabortº¯Êý²úÉú´ËÐźÅ.  
       SIGABRTÏÖÓÃÓÚÕâЩÇé¿ö¡£ª¥  
SIGKILL ÕâÊÇÁ½¸ö²»Äܱ»²¶×½»òºöÂÔÐźÅÖеÄÒ»¸ö¡£ËüÏòϵͳ¹ÜÀíÔ±ÌṩÁËÒ»ÖÖ¿ÉÒÔÏûÃð  
        ÈÎÒ»½ø³ÌµÄ¿É¿¿·½·¨¡£ª¥  
SIGPIPE Èç¹ûÔÚ¶Á½ø³ÌÒÑÖÕֹʱд¹ÜµÀ£¬Ôò²úÉúÐźÅSIGPIPE¡£ÔÚ14.2½ÚÖн«ËµÃ÷¹ÜµÀ¡£  
        µ±Ì×½Ó¿ÚµÄÒ»¶ËÒѾ­ÖÕֹʱ£¬Ò»¸ö½ø³Ìд¸Ã²å¿ÚÒ²²úÉú´ËÐźš£ª¥  
SIGPOLL ÕâÊÇÒ»ÖÖSVR4Ðźţ¬µ±ÔÚÒ»¸ö¿ÉÂÖѯÉ豸ÉÏ·¢ÉúÒ»ÌØ¶¨Ê¼þʱ²úÉú´ËÐźš£ÔÚ  
        12.5.2½ÚÖн«ËµÃ÷pollº¯ÊýºÍ´ËÐźÅ.ËüÓë4.3+BSDµÄSIGIOºÍSIGURGÐźÅÏà½Ó½ü.  
SIGPROF ½«setitimer(2)º¯ÊýÉèÖõĹ£¸Åͳ¼Æ ¼ä¸ôʱ¼äÒѾ­³¬¹ýʱ²úÉú´ËÐźš£  
SIGPWR ÕâÊÇÒ»ÖÖSVR4Ðźţ¬ËüÒÀÀµÓÚϵͳ¡£ËüÖ÷ÒªÓÃÓÚ¾ßÓв»¼ä¶ÏµçÔ´(UPS)µÄϵͳÉÏ¡£  
       Èç¹ûµçԴʧЧ£¬ÔòUPS¾Í»áÆð×÷Ó㬶øÇÒͨ³£Èí¼þ»á½Óµ½Í¨Öª¡£ÔÚÕâÖÖÇé¿öÏ£¬  
       ÏµÍ³ÒÀ¿¿Ðîµç³ØµçÔ´¼ÌÐøÔËÐУ¬ËùÒÔÎÞÐë×÷Èκδ¦Àí¡£µ«ÊÇÈç¹ûÐîµç³ØÒ²½«²»ÄÜ  
       Ö§³Ö¹¤×÷£¬ÔòÈí¼þͨ³£»áÔٴνӵ½Í¨Öª£¬´Ëʱ£¬ËüÔÚ15¡«£³£°ÃëÄÚʹϵͳ¸÷²¿·Ö  
       ¶¼Í£Ö¹ÔËÐС£´ËʱӦµ±´«µÝSIGPWRÐźš£ÔÚ´ó¶àÊýϵͳÖÐʹ½Óµ½Ðîµç³Øµçѹ¹ýµÍ  
       µÄ½ø³Ì½«ÐźÅSIGPWG·¢Ë͸øinit½ø³Ì£¬È»ºóÓÉinit´¦ÀíÍ£»ú²Ù×÷¡£ºÜ¶àϵͳVµÄ  
       initʵÏÖÔÚinittabÎļþÖÐÌṩÁËÁ½¸ö¼Ç¼ÏîÓÃÓÚ´ËÖÖÄ¿µÄ£»powerfailÒÔ¼°  
       powerwait.ĿǰÒÑÄÜ»ñµÃµÍ¼Û¸ñµÄUPSϵͳ£¬ËüÓÃRS-232´®ÐÐÁ¬½ÓÄܹ»ºÜÈÝÒ׵ؽ«  
       Ðîµç³Øµçѹ¹ýµÍµÄÌõ¼þ֪ͨϵͳ£¬ÓÚÊÇÕâÖÖÐźÅÒ²¾Í¸ü¼ÓÖØÒªÁË¡£ª¥  
SIGQUIT µ±Óû§ÔÚÖÕ¶ËÉϰ´Í˳ö¼ü(³£³£ÊÇControl-£Ü)ʱ£¬²úÉú´ËÐźţ¬²¢ËÍÖÁǰ̨½ø³Ì  
        ×éÖеÄËùÓнø³Ì(¼ûͼ9.8)¡£´ËÐźŲ»½öÖÕֹǰ̨½ø³Ì×é(ÈçSIGINTËù×öµÄÄÇÑù),  
        ËüÒ²²úÉúÒ»¸öcoreÎļþ¡£ª¥  
SIGSEGV ´ËÐźÅָʾ½ø³Ì½øÐÐÁËÒ»´ÎÎÞЧµÄ´æ´¢·ÃÎÊ¡£Ãû×ÖSEG±íʾ"¶ÎÎ¥Àý"  
        ("segmentation violation")¡£ª¥  
SIGSTOP ÕâÊÇÒ»¸ö×÷Òµ¿ØÖÆÐźţ¬ËüÍ£Ö¹Ò»¸ö½ø³Ì¡£ËüÀàËÆÓÚ½»»¥Í£Ö¹ÐźÅ(SIGTSTP)£¬  
       µ«ÊÇSIGSTOP²»Äܱ»²¶´Ù»òºöÂÔ¡£ª¥  
SIGSYS Õâָʾһ¸öÎÞЧµÄϵͳµ÷Óá£ÓÉÓÚijÖÖδ֪ԭÒò£¬½ø³ÌÖ´ÐÐÁËÒ»Ìõϵͳµ÷ÓÃÖ¸Áî,  
       µ«Æäָʾϵͳµ÷ÓÃÀàÐ͵IJÎÊýÈ´ÊÇÎÞЧµÄ¡£ª¥  
SIGTERM ÕâÊÇÓÉkill(1)ÃüÁî·¢Ë͵ÄϵͳĬÈÏÖÕÖ¹Ðźš£ª¥  
SIGTRAP Õâָʾһ¸öʵÏÖ¶¨ÒåµÄÓ²¼þ¹ÊÕÏ¡£ª¥  
´ËÐźÅÃûÀ´×ÔÓÚPPP-11µÄTRAPÖ¸Áî¡£ª¥  
SIGTSTP ÕâÊǽ»»¥Í£Ö¹Ðźţ¬µ±Óû§ÔÚÖÕ¶ËÉϰ´¹ÒÆð¼ü*(³£³£ÊÇControl-Z)ʱ£¬ÖÕ  
¶ËÇý¶¯³Ì  
Ðò²úÉú´ËÐźš£ª¥  
SIGTTIN µ±Ò»¸öºǫ́½ø³Ì×é½ø³ÌÊÔͼ¶ÁÆä¿ØÖÆÖÕ¶Ëʱ£¬ÖÕ¶ËÇý¶¯³ÌÐò²úÉú´ËÐźš£  
(Çë²Î¼û9  
ª±8½ÚÖжԴËÎÊÌâµÄÌÖÂÛ)¡£ÔÚÏÂÁÐÀýÍâÇéÐÎÏ£¬²»²úÉú´ËÐźţ¬´Ëʱ¶Á²Ù×÷³ö´í·µ  
»Ø£¬errn  
oÉèÖÃΪEIO£º(a)¶Á½ø³ÌºöÂÔ»ò×èÈû´ËÐźţ¬Ê½(b)¶Á½ø³ÌËùÊôµÄ½ø³Ì×éÊǹ¶ù½ø³Ì  
×é¡£ª¥  
SIGTTOU µ±Ò»¸öºǫ́½ø³Ì×é½ø³ÌÊÔͼдÆä¿ØÖÆÖÕ¶Ëʱ²úÉú´ËÐźÅ(Çë²Î¼û9ª±8½Ú¶Ô  
´ËÎÊÌâµÄ  
ÌÖÂÛ¡£)ÓëÉÏÃæËùÊöµÄSIGTTINÐźŲ»Í¬£¬Ò»¸ö½ø³Ì¿ÉÒÔÑ¡ÔñΪÔÊÐíºǫ́½ø³Ìд¿ØÖÆ  
ÖÕ¶Ë¡£ÔÚ  
µÚʮһÕÂÖн«ÌÖÂÛÈçºÎ¸ü¸Ä´ËÑ¡ÔñÏî¡£Èç¹û²»ÔÊÐíºǫ́½ø³Ìд£¬ÔòÓëSIGTTINÏàËÆ  
Ò²ÓÐÁ½ÖÖ  
ÌØÊâÇé¿ö£º(a)д½ø³ÌºöÂÔ»ò×èÈû´ËÐźţ¬Ê½(b)д½ø³ÌËùÊô½ø³Ì×éÊǹ¶ù½ø³Ì×é¡£  
ÔÚÕâÁ½ÖÖ  
Çé¿öϲ»²úÉú´ËÐźţ¬Ð´²Ù×÷³ö´í·µ»Ø£¬errnoÉèÖÃΪEIO¡£²»ÂÛÊÇ·ñÔÊÐíºǫ́½ø³Ì  
д£¬Ä³Ð©  
³ýдÒÔÍâµÄÏÂÁÐÖն˲Ù×÷Ò²ÄܲúÉú´ËÐźţºtcsetatlr,tcsendbreak,tcdrain,tcf  
lush,tcfl  
owÒÔ¼°tcsetpgrp¡£ÔÚµÚʮһÕ½«ËµÃ÷ÕâЩÖն˲Ù×÷¡£ª¥  
SIGURG ´ËÐźÅ֪ͨ½ø³ÌÒѾ­·¢ÉúÒ»¸ö½ô¼±Çé¿ö¡£ÔÚÍøÂçÁ¬½ÓÉÏ£¬½Óµ½·Ç¹æ¶¨²¨ÌØ  
ÂʵÄÊý¾Ý  
ʱ£¬´ËÐźÅÊÇ¿ÉÑ¡ÔñµØ²úÉúµÄ¡£ª¥  
SIGUSR1 ÕâÊÇÒ»¸öÓû§¶¨ÒåµÄÐźţ¬¿ÉÓÃÓÚÓ¦ÓóÌÐò¡£ª¥  
SIGUSR2 ÕâÊÇÒ»¸öÓû§¶¨ÒåµÄÐźţ¬¿ÉÓÃÓÚÓ¦ÓóÌÐò¡£ª¥  
SIGVTALRM µ±Ò»¸öÓÉsetitimer(2)º¯ÊýÉèÖõÄÐéÄâ¼ä¸ôʱ¼äÒѾ­³¬¹ýʱ²úÉú´ËÐźŠ 
¡£ª¥  
SIGWINCH SVR4ºÍ4ª±3+BSDϵͳºË±£³ÖÓëÿ¸öÖÕ¶Ë»òαÖÕ¶ËÏà¹ØÁªµÄ*²»ÐÒµÄÊÇÓïÊõ  
Í£Ö¹(st  
op)Óв»Í¬µÄÒâÒå¡£ÔÚÌÖÂÛ×÷Òµ¿ØÖƺÍÐźÅʱÎÒÃÇÐèÌá¼°Í£Ö¹(stopping)ºÍ¼ÌÐø×÷  
Òµ¡£µ«ÊÇ  
ÖÕ¶ËÇý¶¯³ÌÐòÒ»Ö±ÓÃÊõÓïÍ£Ö¹±íʾÓÃControl-SºÍControl-Q×Ö·ûÍ£Ö¹ºÍÆð¶¯ÖÕÊä³ö  
¡£Òò´Ë£¬  
ÖÕ¶ËÇý¶¯³ÌÐò½«²úÉú½»»¥Í£Ö¹ÐźźÍ×Ö·û³ÆÖ®Îª¹ÒÆð×Ö·û(suspend)¶ø·ÇÍ£Ö¹×Ö·û  
¡£ª¥  
´°¿ÚµÄ´óС¡¢Ò»¸ö½ø³Ì¿ÉÒÔÓÃioctlº¯Êý(¼û11ª±12½Ú)µÃµ½»òÉèÖô°¿ÚµÄ´óС¡£Èç  
¹ûÒ»¸ö½ø  
³ÌÓÃioctlµÄÉèÖÃ-´°¿Ú-´óСÃüÁî¸ü¸ÄÁË´°¿Ú´óС£¬ÔòϵͳºË½«SIGWINCHÐźÅËÍÖÁ  
ÔÚǰ̨½ø  
³Ì×é¡£ª¥  
SIGXCPU SVR4ºÍ4ª±3+BSDÖ§³Ö×ÊÔ´ÏÞÖÆµÄ¸ÅÄî(¼û7ª±11½Ú)¡£Èç¹û½ø³Ì³¬¹ýÁËÆäÈí  
CPUʱ¼äÏÞ  
ÖÆ£¬Ôò²úÉúSIGXCPUÐźš£ª¥  
SIGXFSZ Èç¹û½ø³Ì³¬¹ýÁËÆäÈíÎļþ³¤¶ÈÏÞÖÆ(¼û7ª±11½Ú)£¬ÔòSVR4ºÍ4ª±3+BSD²úÉú  
´ËÐźš£  
ª¥  
10ª±3¡þsignalº¯Êýª¥  
UnixÐźŻúÖÆµÄ×î¼òµ¥½çÃæÊÇsignalº¯Êýª¥  
#include<signalª±h>ª¥  
void (*signal(int signo,void(*func)(int)>>(int);ª¥  
·µ»Ø£ºÒÔǰµÄÐźŴ¦ÀíÅäÖ㬳ö´íʱSIG-ERRª¥  
signalº¯ÊýÊÇÓÉANSIC¶¨ÒåµÄ¡£ÒòΪANSIC²»Éæ¼°¶à½ø³Ì¡¢½ø³Ì×é¡¢Öնˣɣ¯£ÏµÈ£¬  
ËùÒÔËü¶Ô  
Ðźŵ͍Òå·Ç³£º¬ºý£¬ÒÔÖÂÓÚ¶ÔUnixϵͳ¶øÑÔ¼¸ºõºÁÎÞÓô¦¡£È·Êµ£¬ANSIC¶ÔÐźŠ 
µÄ˵Ã÷Ö»ÓÃÁË2Ò³£¬¶øPOSIXª±1µÄ˵Ã÷ÔòÓÃÁË15Ò³¡£ª¥SVR4Ò²Ìṩsignalº¯Êý£¬¸Ã  
º¯Êý¿ÉÌṩÀϵÄSVR2²»¿É¿¿ÐźÅÓïÒå(ÔÚ10ª±4½ÚÖÐ˵Ã÷ÕâЩÀϵÄÓïÒå)¡£Ìṩ´Ëº¯  
ÊýÖ÷ÒªÊÇΪÁËÏòϼæÈÝÒªÇó´ËÀÏÓïÒåµÄÓ¦ÓóÌÐò£¬ÐÂÓ¦ÓóÌÐò²»Ó¦Ê¹ÓÃËü¡£  
ª¥  
4ª±3+BSDÒ²ÌṩSignalº¯Êý£¬µ«ÊÇËüÊÇÓÃsigactionº¯ÊýʵÏÖµÄ(ÔÚ10ª±14½ÚÖÐ˵Ã÷  
sigactionº¯Êý)£¬ËùÒÔÔÚ4ª±3+BSDÖ®ÏÂʹÓÃËüÌṩеĿɿ¿µÄÐźÅÓïÒå¡£ÔÚ±¾ÊéÖР 
ÓõÄsignalº¯Êý¶¼ÊdzÌÐò10ª±12ÖÐÓÃsigactionʵÏֵĸú¯Êý¡£signo²ÎÊýÊÇͼ10  
ÖеÄÐźÅÃû¡£funcµÄÖµÊÇ(a)³£ÊýSIG-IGN£¬»ò(b)³£ÊýSIG-DFL£¬»ò(c)µ±½Óµ½´ËÐÅ  
ºÅºóÒªµ÷Óõĺ¯ÊýµÄµØÖ·¡£Èç¹ûÖ¸¶¨SIG-IGN£¬ÔòÏòϵͳºË±íʾҪºöÂÔ´ËÐźš£(Òª  
¼ÇסÓÐÁ½¸öÐźÅSIGKILLºÍSIGSTOPÊDz»ÄܺöÂԵġ£)Èç¹ûÖ¸¶¨SIG-DFL£¬Ôò±íʾ½Óµ½  
´ËÐźźóµÄ¶¯×÷ÊÇϵͳĬÈ϶¯×÷(¼ûͼ10ª±1ÖеÄ×îºó1ÁÐ)¡£µ±Ö¸¶¨º¯ÊýµØÖ·ºó£¬ÎÒ  
ÃdzƴËΪ²¶×½´ËÐźš£ÎÒÃdzƴ˺¯ÊýΪÐźŴ¦Àí³ÌÐò»òÐźÅÒ»²¶×½º¯Êý¡£ª¥  
signalº¯ÊýµÄÔ­ÐÍ˵Ã÷´Ëº¯ÊýÒªÇóÁ½¸ö²ÎÊý£¬·µ»ØÒ»¸öº¯ÊýÖ¸Õ룬¶ø¸ÃÖ¸ÕëËùÖ¸Ïò  
µÄº¯ÊýÒª  
ÇóÒ»¸öÕûÐͲÎÊý£¬µ«ÎÞ·µ»ØÖµ(void(*)(int))¡£µÚÒ»¸ö²ÎÊýsignoÊÇÒ»¸öÕûÐÍÊý¡£  
µÚ¶þ¸ö²Î  
ÊýÊǺ¯ÊýÖ¸Õ룬ËüËùÖ¸ÏòµÄº¯ÊýÐèÒªÒ»¸öÕûÐͲÎÊý£¬È¥·µ»ØÖµ¡£ÓÃÒ»°ãÓïÑÔÀ´ÃèÊö  
Ò²¾ÍÊÇÒª  
ÏòÐźŴ¦Àí³ÌÐò½èËÍÒ»¸öÕûÐͲÎÊý£¬¶øËüÈ´ÎÞ·µ»ØÖµ¡£µ±µ÷ÓÃsignalÉèÖÃÐźŴ¦Àí  
³ÌÐòʱ£¬  
µÚ¶þ¸ö²ÎÊýÊÇÖ¸Ïò¸Ãº¯Êý(Ò²¾ÍÊÇÐźŴ¦Àí³ÌÐò)µÄÖ¸Õë¡£signalµÄ·µ»ØÖµÔòÊÇÖ¸Ïò  
ÒÔǰµÄÐÅ  
ºÅ´¦Àí³ÌÐòµÄÖ¸Õë¡£ª¥  
ºÜ¶àϵͳÒÔ¸½¼ÓµÄÒÀÀµÓÚʵÏֵIJÎÊýÀ´µ÷½ÚÐźŴ¦Àí³ÌÐò¡£ÔÚ10ª±21½ÚÖн«ËµÃ÷¿É  
Ñ¡ÔñµÄSV  
ª¥  
4ª±3+BSDÒ²ÌṩSignalº¯Êý£¬µ«ÊÇËüÊÇÓÃsigactionº¯ÊýʵÏÖµÄ(ÔÚ10ª±14½ÚÖÐ˵Ã÷  
sigactionº¯Êý)£¬ËùÒÔÔÚ4ª±3+BSDÖ®ÏÂʹÓÃËüÌṩеĿɿ¿µÄÐźÅÓïÒå¡£ÔÚ±¾ÊéÖР 
ÓõÄsignalº¯Êý¶¼ÊdzÌÐò10ª±12ÖÐÓÃsigactionʵÏֵĸú¯Êý¡£signo²ÎÊýÊÇͼ10  
ÖеÄÐźÅÃû¡£funcµÄÖµÊÇ(a)³£ÊýSIG-IGN£¬»ò(b)³£ÊýSIG-DFL£¬»ò(c)µ±½Óµ½´ËÐÅ  
ºÅºóÒªµ÷Óõĺ¯ÊýµÄµØÖ·¡£Èç¹ûÖ¸¶¨SIG-IGN£¬ÔòÏòϵͳºË±íʾҪºöÂÔ´ËÐźš£(Òª  
¼ÇסÓÐÁ½¸öÐźÅSIGKILLºÍSIGSTOPÊDz»ÄܺöÂԵġ£)Èç¹ûÖ¸¶¨SIG-DFL£¬Ôò±íʾ½Óµ½  
´ËÐźźóµÄ¶¯×÷ÊÇϵͳĬÈ϶¯×÷(¼ûͼ10ª±1ÖеÄ×îºó1ÁÐ)¡£µ±Ö¸¶¨º¯ÊýµØÖ·ºó£¬ÎÒ  
ÃdzƴËΪ²¶×½´ËÐźš£ÎÒÃdzƴ˺¯ÊýΪÐźŴ¦Àí³ÌÐò»òÐźÅÒ»²¶×½º¯Êý¡£ª¥  
signalº¯ÊýµÄÔ­ÐÍ˵Ã÷´Ëº¯ÊýÒªÇóÁ½¸ö²ÎÊý£¬·µ»ØÒ»¸öº¯ÊýÖ¸Õ룬¶ø¸ÃÖ¸ÕëËùÖ¸Ïò  
µÄº¯ÊýÒª  
ÇóÒ»¸öÕûÐͲÎÊý£¬µ«ÎÞ·µ»ØÖµ(void(*)(int))¡£µÚÒ»¸ö²ÎÊýsignoÊÇÒ»¸öÕûÐÍÊý¡£  
µÚ¶þ¸ö²Î  
ÊýÊǺ¯ÊýÖ¸Õ룬ËüËùÖ¸ÏòµÄº¯ÊýÐèÒªÒ»¸öÕûÐͲÎÊý£¬È¥·µ»ØÖµ¡£ÓÃÒ»°ãÓïÑÔÀ´ÃèÊö  
Ò²¾ÍÊÇÒª  
ÏòÐźŴ¦Àí³ÌÐò½èËÍÒ»¸öÕûÐͲÎÊý£¬¶øËüÈ´ÎÞ·µ»ØÖµ¡£µ±µ÷ÓÃsignalÉèÖÃÐźŴ¦Àí  
³ÌÐòʱ£¬  
µÚ¶þ¸ö²ÎÊýÊÇÖ¸Ïò¸Ãº¯Êý(Ò²¾ÍÊÇÐźŴ¦Àí³ÌÐò)µÄÖ¸Õë¡£signalµÄ·µ»ØÖµÔòÊÇÖ¸Ïò  
ÒÔǰµÄÐÅ  
ºÅ´¦Àí³ÌÐòµÄÖ¸Õë¡£ª¥  
ºÜ¶àϵͳÒÔ¸½¼ÓµÄÒÀÀµÓÚʵÏֵIJÎÊýÀ´µ÷½ÚÐźŴ¦Àí³ÌÐò¡£ÔÚ10ª±21½ÚÖн«ËµÃ÷¿É  
Ñ¡ÔñµÄSV  
R4ÓÐ4ª±3+BSD²ÎÊý¡£ª¥  
±¾½Ú¿ªÍ·ËùʾµÄsignalº¯ÊýÔ­ÐÍÌ«¸´ÔÓÁË£¬Èç¹ûʹÓÃÏÂÃæµÄtypedef¡²plawget 19  
92¡³£¬Ôò  
¿ÉʹÆä¼òµ¥Ò»Ð©¡£ª¥  
typedef void Sigfunc(int)ª¥  
È»ºó£¬¿É½«signalº¯ÊýÔ­ÐÍд³É£ºª¥  
Sigfunc *signal(int,Sigfunc *);ª¥  
ÎÒÃÇÒѽ«´Ëtypedef°üÀ¨ÔÚourhdrª±hÎļþÖÐ(¸½Â¼B)£¬²¢¸½±¾ÕÂÖеĺ¯ÊýÒ»ÆðʹÓà 
¡£ª¥  
Èç¹û²é¿´ÏµÍ³µÄÍ·Îļþ<signalª±h>,Ôò¶àÄê¶¼»áÕÒµ½ÏÂÁÐÐÎʽµÄ˵Ã÷£ºª¥  
#degine SIG ¼£Ã£Ä££ª³£²¡½ERRª¥  
#define SIG ¼£Ã£Ä££ª³£²¡½ERR (void (*)(>>-1ª¥  
#define SIG ¼£Ã£Ä££ª³£²¡½DFL (void (*)(>>>0ª¥  
#define SIG ¼£Ã£Ä££ª³£²¡½IGN (Void (*)(>>1ª¥  
ÕâЩ³£Êý¿ÉÓÃÓÚ±íʾ"Ö¸Ïòº¯ÊýµÄÖ¸Õ룬¸Ã»­ÊýÒªÒ»¸öÕûÐͲÎÊý£¬¶øÇÒÎÞ·µ»ØÖµ¡£  
"signal  
µÄµÚ¶þ¸ö²ÎÊý¼°Æä·µ»ØÖµ¾Í¿ÉÓÃËüÃDZíʾ¡£ÕâЩ³£ÊýËùʹÓõÄÈý¸öÖµ²»Ò»¶¨ÒªÊÇ-  
1£¬0ºÍ1¡£  
ËüÃDZØÐëÊÇÈý¸öÖµ¶ø²»ÄÜÊÇÈÎÒ»¿É˵Ã÷º¯ÊýµÄµØÖ·¡£´ó¶àÊýUnixϵͳʹÓÃÉÏÃæËùʾ  
µÄÖµ¡£ª¥  
ʵÀýª¥  
³ÌÐò10ª±1ÏÔʾÁËÒ»¸ö¼òµ¥µÄÐźŴ¦Àí³ÌÐò£¬Ëü²¶×½Á½¸öÓû§¶¨ÒåµÄÐźŲ¢´òÓ¡ÐÅ  
ºÅ±àºÅ¡£  
ÔÚ10ª±10½ÚÖÐ˵Ã÷pauseº¯Êý£¬Ëüʹµ÷Óýø³Ì˯Ãß¡£ª¥  
³ÌÐò10ª±1 ²¶×½SIGUSR1ºÍSIGUSR2µÄ¼òµ¥´¦Àí³ÌÐòª¥  
ÎÒÃÇʹ¸Ã³ÌÐòÔÚºǫ́ÔËÐУ¬²¢ÇÒÓÃkill(1)ÃüÁÐźÅË͸øËü¡£×¢Ò⣬ÔÚUnixÖУ¬  
ÏûÃð(kill  
)Õâ¸öÊõÓïÊÇÓôʲ»µ±µÄ¡£kill(1)ÃüÁîºÍkill(2)º¯ÊýÖ»Êǽ«Ò»¸öÐźÅË͸øÒ»¸ö½ø  
³Ì»ò½ø³Ì  
×é¡£¸ÃÐźÅÊÇ·ñÖÕÖ¹¸Ã½ø³ÌÔòÈ¡¾öÓÚ¸ÃÐźŵÄÀàÐÍ£¬ÒÔ¼°¸Ã½ø³ÌÊÇ·ñ°²ÅÅÁ˲¶×½¸Ã  
Ðźš£ª¥  
$ aª±out & ÔÚºǫ́Æô¶¯½ø³Ìª¥  
£Û1£Ý 4720 ×÷Òµ¿ØÖÆshell´òÓ¡×÷ÒµºÅºÍ½ø³ÌIDª¥  
$ kill -USR1 4720 Ïò¸Ã½ø³Ì·¢ËÍSIGUSR1ª¥  
received SIGUSR1ª¥  
$ kill -USR2 4720 ª¥  
received SIGUSR2 ¡­¡­¡­¡­SIGUSR2ª¥  
$ kill 4720ª¥  
£Û1£Ý+Terminated aª±out & ¡­¡­¡­SIGTERMª¥  
µ±Ïò¸Ã½ø³Ì·¢ËÍSIGTERMÐźź󣬸ýø³Ì¾ÍÖÕÖ¹£¬ÒòΪËü¿É²¶×½´ËÐźţ¬¶ø¶Ô´ËÐÅ  
ºÅµÄϵͳ  
ĬÈ϶¯×÷ÊÇÖÕÖ¹¡£ª¥  
³ÌÐòÆð¶¯ª¥  
µ±execÒ»µÀ³ÌÐòʱ£¬ËùÓÐÐźŵÄ״̬¶¼ÊÇ»òϵͳĬÈÏ»òºöÂÔ¡£Í¨³£ËùÓÐÐźŶ¼±»Éè  
ÖÃΪËüÃÇ  
µÄϵͳĬÈ϶¯×÷£¬³ý·Çµ÷ÓÃexecµÄ½ø³ÌºöÂÔ¸ÃÐźš£·Ç³£ÌØÊâexecº¯Êý½«Ô­ÏÈÉèÖà 
ΪҪ²¶×½  
µÄÐźŶ¼¸ü¸ÄΪĬÈ϶¯×÷£¬ÆäËüÐźŵÄ״̬Ôò²»±ä¡£(Ò»¸ö½ø³ÌÔ­ÏÈÒª²¶×½µÄÐźŠ 
£¬ÓëÆäexe  
cÒ»µÀгÌÐòºó£¬¾Í×ÔÈ»µØ²»ÄÜÔÙ²¶×½ÁË£¬ÒòΪÐźÅÒ»²¶×½º¯ÊýµÄµØÖ·ºÜ¿ÉÄÜÔÚËù  
Ö´ÐеÄР 
³ÌÐòÎļþÖÐÒÑÎÞÒâÒå¡£)ª¥  
ÎÒÃǾ­³£»áÅöµ½µÄÒ»¸ö¾ßÌåÀý×ÓÊÇÒ»¸ö½»»¥shellÈçºÎ´¦Àí¶Ôºǫ́½ø³ÌµÄÖжϺÍÍË  
³öÐźš£  
¶ÔÓÚÒ»¸ö·Ç×÷Òµ¿ØÖÆshell¡£µ±ÎÒÃÇÔÚºǫִ́ÐÐÒ»¸ö½ø³Ìʱ£¬ÀýÈ磺ª¥  
cc mainª±c &ª¥  
shell×Ô¶¯µØ½«ºǫ́½ø³ÌÖжÔÖжϺÍÍ˳öÐźŵĴ¦Àí·½Ê½ÉèÖÃΪºöÂÔ¡£ÓÚÊÇ£¬µ±ÎÒ  
Ãǰ´ÖжϠ 
×Ö·ûʱ¾Í²»»áÓ°Ïìµ½ºǫ́½ø³Ì¡£Èç¹ûûÓÐÕâÑù´¦Àí£¬ÄÇôµ±ÎÒÃǰ´ÖжÏ×Ö·ûʱ£¬Ëü  
²»µ«ÖÕÖ¹  
ǰ̨½ø³Ì£¬Ò²ÖÕÖ¹ËùÓкǫ́½ø³Ì¡£ª¥  
ºÜ¶à²¶×½ÕâÁ½¸öÐźŵĽ»»¥³ÌÐò¾ßÓÐÏÂÁÐÐÎʽµÄ´úÂ룺ª¥  
int sig ¼£Ã£Ä££ª³£²¡½int(),sig ¼£Ã£Ä££ª³£²¡½quit();ª¥ª¥  
if(signal(SIGINT,SIG ¼£Ã£Ä££ª³£²¡½IGN) !=SIG ¼£Ã£Ä££ª³£²¡½IGN)ª¥  
signal(SIGINT,sig ¼£Ã£Ä££ª³£²¡½int);ª¥  
if(signal(SIGQUIT,SIG ¼£Ã£Ä££ª³£²¡½IGN)!=SIG ¼£Ã£Ä££ª³£²¡½IGN)ª¥  
signal(SIGQUIT,sig ¼£Ã£Ä££ª³£²¡½quit);ª¥  
ÕâÑù´¦Àíºó£¬½öµ±SIGINTºÍSIGQUITÔ­ÏȲ¢²»ºöÂÔ£¬½ø³Ì²Å²¶×½ËüÃÇ¡£ª¥  
´ÓÕâЩsignalµ÷ÓÃÖпÉÒÔ¿´µ½ÕâÖÖº¯ÊýµÄÏÞÖÆ£º²»¸Ä±äÐźŵĴ¦Àí·½Ê½¾Í²»ÄÜÈ·¶¨  
Ðźŵĵ±  
ǰ´¦Àí·½Ê½¡£ÎÒÃǽ«ÔÚ±¾ÕµÄÉԺ󲿷Ö˵Ã÷ʹÓÃsigaction¿ÉÒÔÈ·¶¨Ò»¸öÐźŵĴ¦  
Àí·½Ê½£¬  
¶øÎÞÐè¸Ä±äËü¡£ª¥  
½ø³Ì´´½¨ª¥  
µ±Ò»¸ö½ø³Ìµ÷ÓÃforkʱ£¬Æä×Ó½ø³Ì¼Ì³Ð¸¸½ø³ÌµÄÐźŴ¦Àí·½Ê½¡£ÒòΪ×Ó½ø³ÌÔÚ¿ªÊ¼  
ʱ¸´ÖÆÁË  
¸¸½ø³Ì´æ´¢Í¼Ïó£¬ËùÒÔÐźŲ¶×½º¯ÊýµÄµØÖ·ÔÚ×Ó½ø³ÌÖÐÊÇÓÐÒâÒåµÄ¡£ª¥  
10ª±4¡þ²»¿É¿¿µÄÐźŪ¥  
ÔÚÔçÆÚµÄUnix°æ±¾ÖÐ(ÀýÈçVersion7)£¬ÐźÅÊDz»¿É¿¿µÄ¡£²»¿É¿¿ÔÚÕâÀïÖ¸µÄÊÇ£¬ÐÅ  
ºÅ¿ÉÄܻᠠ
±»¶ªÊ§¡¼CD2¡½Ò»¸öÐźŷ¢ÉúÁË£¬µ«½ø³ÌÈ´¾ö²»»áÖªµÀÕâÒ»µã¡£ÄÇʱ£¬½ø³Ì¶ÔÐźŠ 
µÄ¿ØÖÆÄÜ  
Á¦Ò²ºÜµÍ£¬ËüÄܲ¶×½ÐźŻòºöÂÔËü£¬µ«ÓÐЩºÜÐèÎö¹¦ÄÜËüÈ´²¢²»¾ß±¸¡£ÀýÈ磬ÓÐʱ  
Óû§Ï£Íû  
֪ͨϵͳºË×èÈû-Ðźš¼CD2¡½²»ÒªºöÂÔ¸ÃÐźţ¬¶øÊÇÔÚÆä·¢Éúʱ¼ÇסËü£¬È»ºóÔÚ½ø  
³Ì×÷ºÃÁË  
×¼±¸Ê±ÔÙ֪ͨËü¡£ÕâÖÖ×èÈûÐźŵÄÄÜÁ¦µ±Ê±²¢²»¾ß±¸¡£ª¥  
4ª±2BSD¶ÔÐźŻú¹¹½øÐÐÁ˸ü¸Ä£¬ÌṩÁ˱»³ÆÖ®Îª¿É¿¿ÐźŵĻúÖÆ¡£È»ºó£¬SVR3Ò²  
Ò»¸öʱ¼ä  
´°¿Ú£¬Ôڴ˶Îʱ¼äÖУ¬¿ÉÄÜ·¢ÉúÁíÒ»´ÎÖжÏÐźš£µÚ¶þ¸öÐźŻáÔì³ÉÖ´ÐÐĬÈ϶¯×÷  
£¬¶ø¶ÔÖР 
¶ÏÐźÅÔòÊÇÖÕÖ¹¸Ã½ø³Ì¡£ÕâÖÖÀàÐ͵ijÌÐò¶ÎÔÚ´ó¶àÊýÇé¿ö»áÕý³£¹¤×÷£¬Ê¹µÃÎÒÃÇÈÏ  
ΪËüÃÇÊÇ  
±àдµÃÕýÈ·µÄ£¬¶øÊµ¼ÊÉÏÈ´²¢²»ÊÇÈç´Ë¡£ª¥  
ÕâЩÔçÆÚ°æ±¾µÄÁíÒ»¸öÎÊÌâÊÇ£ºÔÚ½ø³Ì²»Ï£ÍûijÖÖÐźŷ¢Éúʱ£¬Ëü²»ÄܹرոÃÐźŠ 
¡£½ø³ÌÄÜ  
×ö  
µÄ¾ÍÊǺöÂÔ¸ÃÐźš£ÓÐʱÎÒÃÇÏ£Íû֪ͨϵͳ"×èÖ¹ÏÂÁÐÐźŷ¢Éú£¬Èç¹ûËüÃÇȷʵ²ú  
ÉúÁË£¬Çë  
¼ÇסËüÃÇ¡£"˵Ã÷ÕâÖÖÎÊÌâµÄÒ»¸ö¾­µäʵÀýÊÇÏÂÁгÌÐò¶Î£¬Ëü²¶×½Ò»¸öÐźţ¬È»ºó  
ÉèÖÃÒ»¸ö  
±íʾ¸ÃÐźÅÒÑ·¢ÉúµÄ±êÖ¾£ºª¥  
int sig ¼£Ã£Ä££ª³£²¡½int ¼£Ã£Ä££ª³£²¡½flag; £¯*µ±Ðźŷ¢ÉúʱÉèÖ÷Ç0*£¯ª¥  
   
main()ª¥  
{ª¥  
int sig ¼£Ã£Ä££ª³£²¡½int(); £¯*ÎÒÃÇÐźŴ¦Àí³ÌÐò*£¯ª¥  
¡­ª¥  
signal(SIGINT,sig ¼£Ã£Ä££ª³£²¡½int);£¯*ÉèÖô¦Àí³ÌÐò *£¯ª¥  
¡­ª¥  
while(sig ¼£Ã£Ä££ª³£²¡½int ¼£Ã£Ä££ª³£²¡½flag==0)ª¥  
pause(); £¯* Ë¯Ãߣ¬µÈ´ýÐźŠ*£¯ª¥  
¡­ª¥  
}ª¥  
sig ¼£Ã£Ä££ª³£²¡½int()ª¥  
{ª¥  
signal(SIGINT,sig ¼£Ã£Ä££ª³£²¡½int);£¯*ΪÏÂÒ»´ÎÐźÅÖØÐÂÉèÖô¦Àí³ÌÐò*£¯ª¥  
   
sig ¼£Ã£Ä££ª³£²¡½int ¼£Ã£Ä££ª³£²¡½flag=1; £¯* ÉèÖñêÖ¾¹©mainÑ­»·¼ì²é *£¯  
ª¥  
ÆäÖУ¬½ø³Ìµ÷ÓÃpauseº¯ÊýʹÆä˯Ãߣ¬Ö±µ½²¶×½µ½Ò»¸öÐźš£µ±´ËÐźű»²¶×½µ½ºó  
£¬ÐźŴ¦  
Àí³ÌÐò½«±êÖ¾sig-int-flagÉèÖÃΪ·Ç0¡£ÔÚ½Ó»ñÐźźóϵͳ½«¸Ã½ø³Ì»½ÐÑ£¬ÔÚÐźŠ 
´¦Àí³Ì  
Ðò·µ»ØÖ®ºó£¬Ëü¼ì²âµ½¸Ã±ê־Ϊ·Ç0£¬È»ºóÖ´ÐÐËüËùÐè×öµÄ¡£µ«ÊÇÕâÀïÒ²ÓÐÒ»¸öʱ  
¼ä´°¿Ú£¬  
Õâʹ²Ù×÷¿ÉÄÜ´íÎó¡£Èç¹ûÔÚ²âÊÔsig-int-flagÖ®ºó£¬µ÷ÓÃpaust֮ǰ·¢ÉúÐźţ¬Ôò  
´Ë½ø³Ì¿É  
ÄÜ»áһֱ˯Ãß(¼Ù¶¨´ËÐźŲ»ÔٴβúÉú)¡£ÓÚÊÇ£¬Õâ´Î·¢ÉúµÄÐźÅÒ²¾Í¶ªÊ§ÁË¡£ÕâÊÇ  
ÁíÒ»¸öÀý  
×Ó£¬Ä³ÖÖ´úÂë²¢²»ÕýÈ·£¬µ«ÊÇ´ó¶àÊýʱ¼ä£¬ËüÄÜÕý³£¹¤×÷¡£²éÕÒ²¢ÅųýÕâÖÖÀàÐ͵Ġ 
ÎÊÌâÊǺܠ 
À§Äѵġ£ª¥  
10ª±5¡þÖжϵÄϵͳµ÷Óꥠ 
ÔçÆÚUnixϵͳµÄÒ»¸öÌØÐÔÊÇ£ºÈç¹ûÔÚ½ø³ÌÖ´ÐÐÒ»¸öµÍËÙϵͳµ÷Óöø×èÈûÆÚ¼ä²¶×½µ½  
Ò»¸öÐźŠ 
£¬Ôò¸Ãϵͳµ÷Óþͱ»Öжϲ»ÔÙ¼ÌÐøÖ´ÐС£¸Ãϵͳµ÷Óóö´í·µ»Ø£¬ÆäerrnoÉèÖÃΪEI  
NTR¡£ÕâÑù  
´¦ÀíµÄÀíÓÉÊÇ£ºÒòΪһ¸öÐźŷ¢ÉúÁË£¬½ø³Ì²¶×½µ½ÁËËü£¬ÕâÒâζ×ÅÒѾ­·¢ÉúÁËijÖÖ  
ÊÂÇ飬Ëù  
ÒÔÊǸöºÃ»ú»áÓ¦µ±»½ÐÑ×èÈûµÄϵͳµ÷Óᣪ¥  
ÔÚÕâÀÎÒÃDZØÐëÇø·Öϵͳµ÷Óõĺ¯Êý¡£µ±²¶×½µ½Ä³¸öÐźÅʱ£¬±»ÖжϵÄÊÇÔÚϵͳ  
ºËÄÚÖ´ÐР 
µÄϵͳµ÷Óᣪ¥  
ΪÁËÖ§³ÖÕâÖÖÌØÐÔ£¬½«ÏµÍ³µ÷Ó÷ֳÉÁ½Àࣺ"µÍËÙ"ϵͳµ÷ÓÃºÍÆäËüϵͳµ÷ÓᣵÍËÙ  
ϵͳµ÷  
ÓÃÊÇ¿ÉÄÜ»áʹ½ø³ÌÓÀÔ¶×èÈûµÄÒ»Ààϵͳµ÷Óã¬ËüÃǰüÀ¨£ºª¥  
¡¤ÔÚ¶ÁijЩÀàÐ͵ÄÎļþʱ£¬Èç¹ûÊý¾Ý²¢²»´æÔÚÔò¿ÉÄÜ»áʹµ÷ÓÃÕßÓÀÔ¶×èÈû(¹ÜµÀ¡¢  
ÖÕ¶ËÉ豸  
ÒÔ¼°ÍøÂçÉ豸)¡£ª¥  
¡¤ÔÚдÕâЩÀàÐ͵ÄÎļþʱ£¬Èç¹û²»ÄÜÁ¢¼´½ÓÊÜÕâЩÊý¾Ý£¬ÔòÒ²¿ÉÄÜ»áʹµ÷ÓÃÕßÓÀÔ¶  
×èÈû¡£ª¥  
¡¤´ò¿ªÎļþ£¬ÔÚijÖÖÌõ¼þ·¢Éú֮ǰҲ¿ÉÄÜ»áʹµ÷ÓÃÕß×èÈû(ÀýÈ磬´ò¿ªÖÕ¶ËÉ豸£¬  
Ö÷ÒªµÈ´ý  
µ½Ò»¸öËùÁ¬½ÓµÄµ÷ÖÆ½âµ÷Æ÷»Ø´ðÁ˵绰)¡£ª¥  
¡¤pause(°´ÕÕ¶¨Ò壬Ëüʹµ÷Óýø³Ì˯ÃßÖ±ÖÁ²¶×½µ½Ò»¸öÐźÅ)ºÍwait¡£ª¥  
¡¤Ä³ÖÖioctl²Ù×÷¡£ª¥  
¡¤Ä³Ð©½ø³Ì¼äͨÐź¯Êý(µÚÊ®ËÄÕÂ)¡£ª¥  
ÖµµÃ×¢ÒâµÄµÍËÙϵͳµ÷ÓõÄÀýÍâÊÇÓë´ÅẠ̊ɣ¯£ÏÓйصÄϵͳµ÷Óá£ËäÈ»¶Á¡¢Ð´Ò»¸ö  
´ÅÅÌÎļþ  
¿ÉÄÜÔÝʱ×èÈûµ÷ÓÃÕß(ÔÚ´ÅÅÌÇý¶¯³ÌÐò½«ÇëÇóÅÅÈë¶ÓÁУ¬È»ºóÔÚÊʵ±Ê±¼äÖ´ÐÐÇëÇó  
ÆÚ¼ä)£¬µ«  
Êdzý·Ç·¢ÉúÓ²¼þ´í£¬£É£¯£Ï²Ù×÷×Ü»áºÜ¿ì·µ»Ø£¬²¢Ê¹µ÷ÓÃÕß²»ÔÙ´¦ÓÚ×èÈû״̬¡£ª¥  
   
¿ÉÒÔÓÃÖжÏϵͳµ÷ÓÃÕâÖÖ·½·¨À´´¦ÀíµÄÒ»ÖÖÇé¿öÊÇ£ºÒ»¸ö½ø³ÌÆð¶¯Á˶ÁÖն˲Ù×÷£¬  
¶øÊ¹Óøà 
ÖÕ¶ËÉ豸µÄÓû§È´À뿪¸ÃÖն˺ܳ¤Ê±¼ä¡£ÔÚÕâÖÖÇé¿öϽø³Ì¿ÉÄÜ´¦ÓÚ×èÈû״̬¼¸¸ö  
СʱÉõÖÁ  
ÊýÌ죬³ý·Çϵͳͣ»ú£¬·ñÔòÒ»Ö±Èç´Ë¡£ª¥  
Óë±»ÖжϵÄϵͳµ÷ÓÃÏà¹ØµÄÎÊÌâÊDZØÐëÓÃÏÔʽ·½·¨´¦Àí³ö´í·µ»Ø¡£µäÐ͵ĴúÂëÐòÁР 
(¼Ù¶¨½ø  
ÐÐÒ»¸ö¶Á²Ù×÷£¬Ëü±»Öжϣ¬ÎÒÃÇÏ£ÍûÖØÐÂÆð¶¯Ëü)¿ÉÄÜÈçÏÂÁÐÑùʽ£ºª¥  
again:ª¥  
if((n=read(fd,buff,BUFFSIZE))<0){ª¥  
if(errno==EINTR)ª¥  
goto again; £¯*Ò»¸öÖжϵÄϵͳµ÷Óà*£¯ª¥  
£¯* ´¦ÀíÆäËü³ö´í *£¯ª¥  
}ª¥  
ΪÁ˰ïÖúÓ¦ÓóÌÐòʹÆä²»±Ø´¦Àí±»ÖжϵÄϵͳµ÷Óã¬4ª±2BSDÒý½øÁËijЩ±»ÖжϵĠ 
ϵͳµ÷Óà 
µÄ×Ô¶¯ÔÙÆð¶¯¡£×Ô¶¯ÔÙÆð¶¯µÄϵͳµ÷ÓðüÀ¨£ºioctl¡¢read¡¢readv¡¢write¡¢writ  
er¡¢wait  
ºÍwaitpid¡£ÕýÈçǰÊö£¬ÆäÖÐǰÎå¸öº¯ÊýÖ»ÓжԵÍËÙÉ豸½øÐвÙ×÷ʱ²Å»á±»ÐźÅÖР 
¶Ï¡£¶øwai  
tºÍwaitpidÔÚ²¶×½µ½ÐźÅʱ×ÜÊDZ»Öжϡ£Ä³Ð©Ó¦ÓóÌÐò²¢²»Ï£ÍûÕâЩº¯Êý±»ÖжϺó  
ÔÙÆð¶¯£¬  
ÓÚÊÇÕâÖÖ×Ô¶¯ÔÙÆð¶¯µÄ´¦Àí·½Ê½Ò²»á´øÀ´ÎÊÌ⣬Ϊ´Ë4ª±3BSDÔÊÐí½ø³ÌÔÚÿ¸öÐźŠ 
¸ö±ð´¦Àí  
µÄ»ù´¡Éϲ»Ê¹Óô˹¦ÄÜ¡£ª¥  
POSIXª±11ÔÊÐíʵÏÖÔÙÆð¶¯ÏµÍ³µ÷Ó㬵«Õâ²¢²»ÊÇÒªÇóµÄ¡£ÏµÍ³VµÄĬÈϹ¤×÷·½Ê½ÊÇ  
²»Æð¶¯Ïµ  
ͳµ÷Óᣵ«ÊÇSVR4ʹÓÃsigactionʱ(10ª±14½Ú)£¬¿ÉÒÔÖ¸¶¨SA-RESTARTÑ¡ÏîÒÔÔÙÆð  
¶¯ÓɸÃÐÅ  
ºÅÖжϵÄϵͳµ÷Óᣪ¥  
ÔÚ4ª±3+BSDÖУ¬ÏµÍ³µ÷ÓõÄÔÙÆð¶¯ÒÀÀµÓÚµ÷ÓÃÁËÄÇÒ»¸öº¯ÊýÉèÖÃÐźŴ¦Àí·½Ê½ÅäÖà 
¡£½ÏÀÏʽ  
µÄ4ª±3BSD¼æÈݵÄsigvecº¯Êýʹ±»¸ÃÐźÅÖжϵÄϵͳµ÷ÓÃ×Ô¶¯ÔÙÆð¶¯¡£µ«ÊÇ£¬Ê¹Óà 
½ÏеÄPOS  
IXª±1¼æÈݵÄsigactionÔò¿ÉʹËüÃÇÔÙÆð¶¯¡£µ«ÈçͬÔÚSVR4ÖÐÒ»Ñù£¬ÔÚsigactionÖР 
¿ÉÒÔʹ  
ÓÃSA-RESTARTÑ¡ÔñÏʹϵͳºËÔÙÆð¶¯ÓɸÃÐźÅÖжϵÄϵͳµ÷Óᣪ¥  
4ª±2BSDÒý½ø×Ô¶¯ÔÙÆð¶¯¹¦ÄܵÄÒ»¸öÀíÓÉÊÇ£ºÓÐʱÓû§²¢²»ÖªµÀËùʹÓõÄÊäÈë¡¢Êä  
³öÉ豸ÊÇ  
·ñÊǵÍËÙÉ豸¡£Èç¹ûÎÒÃDZàдµÄ³ÌÐò¿ÉÒÔÓý»»¥·½Ê½ÔËÐУ¬ÔòËü¿ÉÄܶÁ¡¢Ð´Öն˵͠ 
ËÙÉ豸¡£  
Èç¹ûÔÚ³ÌÐòÖв¶×½Ðźţ¬¶øÏµÍ³È´¿ÉÌṩÔÙÆð¶¯¹¦ÄÜ£¬Ôò¶Ôÿ´Î¶Á¡¢Ð´ÏµÍ³µ÷Óþ͠ 
Òª½øÐÐÊÇ  
·ñ³ö´í·µ»ØµÄ²âÊÔ£¬Èç¹ûÊDZ»Öжϵģ¬ÔòÔÙ½øÐжÁ¡¢Ð´¡£ª¥  
ͼ10ª±2ժ¼ÁгöÁ˼¸ÖÖʵÏÖËùÌṩµÄÐźŹ¦Äܼ°ËüÃǵÄÓïÒå¡£ª¥  
¡¼£È£Ô£µ"£Ó£Ó¡½Í¼10ª±2 ¼¸ÖÖÐźÅʵÏÖËùÌṩµÄ¹¦Äܪ¥¡¼£È£Ô£µ£Ó£Ó¡½  
Ó¦µ±Á˽⣬ÆäËû³§ÉÌÌṩµÄUnixϵͳ¿ÉÄÜ»áÓв»Í¬ÓÚͼ10ª±2ÖÐËùʾµÄ´¦ÀíÇé¿ö¡£  
ÀýÈ磬Sun  
OS 4ª±1ª±2ÖеÄsigactionÆäĬÈÏ·½Ê½ÊÇÔÙÆð¶¯±»ÖжϵÄϵͳµ÷Óã¬ÕâÓëSVR4ºÍ4ª±  
3+BSD¶¼  
²»Í¬¡£ª¥  
ÔÚ³ÌÐò10ª±12ÖÐÌṩÁËÎÒÃÇ×Ô¼ºµÄsignalº¯Êý°æ±¾£¬ËüÊÔÍ¼ÖØÐÂÆð¶¯±»ÖжϵÄϵͳ  
µ÷ÓÃ(  
³ýSIGALRMÐźÅÍâ)¡£ÔÚ³ÌÐò10ª±13ÖÐÔòÌṩÁËÁíÒ»¸öº¯Êýsignal-intr£¬Ëü²»½øÐР 
ÔÙÆð¶¯¡£  
ª¥  
ÔÚËùÓгÌÐòʵÀýÖУ¬ÎÒÃǶ¼ÓÐÄ¿µÄµØÏÔʾÁËÐźŴ¦Àí³ÌÐòµÄ·µ»Ø(Èç¹ûËü·µ»ØµÄ»°  
)£¬ÕâÖÖ·µ  
»Ø¿ÉÄÜÖжÏÁËÒ»¸öϵͳµ÷Óᣪ¥  
ÔÚ12ª±5½Ú˵Ã÷selectºÍpollº¯Êýʱ»¹»áÉæ¼°±»ÖжϵÄϵͳµ÷Óᣪ¥  
10ª±6¡þ¿ÉÔÙÈ뺯Êýª¥  
½ø³Ì²¶×½µ½ÐźŲ¢¼ÌÐøÖ´ÐÐʱ£¬ËüÊ×ÏÈÖ´ÐиÃÐźŴ¦Àí³ÌÐòÖеÄÖ¸Áî¡£Èç¹û´ÓÐźŠ 
´¦Àí³ÌÐò  
·µ»Ø(ÀýÈçûÓе÷ÓÃexit»òlongjmp)£¬ÔòÔÚ²¶×½µ½ÐźÅʱ½ø³ÌÕýÔÚÖ´ÐеÄÕý³£Ö¸Áî  
ÐòÁоͼ̠ 
ÐøÖ´ÐС£(ÕâÀàËÆÓÚÓ²¼þÖжϷ¢ÉúʱËù×öµÄ¡£)µ«ÔÚÐźŴ¦Àí³ÌÐòÖУ¬²»ÄÜÅжϲ¶×½  
µ½ÐźÅʱ  
½ø³ÌÖ´Ðе½ºÎ´¦¡£Èç¹û½ø³ÌÕýÔÚÖ´ÐÐmalloc£¬ÔÚÆä¶ÑÖзÖÅäÁíÍâµÄ´æ´¢¿Õ¼ä£¬¶ø´Ë  
ʱÓÉÓÚ²¶  
×½µ½ÐźŲåÈëÖ´ÐиÃÐźŴ¦Àí³ÌÐò£¬ÆäÖÐÓÖµ÷ÓÃmalloc£¬Õâʱ»á·¢Éúʲô?ÓÖÀýÈç  
Èô½ø³ÌÕý  
ÔÚÖ´ÐÐgetpwnam(6ª±2½Ú)ÕâÖÖ½«Æä½á¹û´æ·ÅÔÚ¾²Ì¬´æ´¢µ¥ÔªÖеĺ¯Êý£¬¶ø²åÈëÖ´ÐР 
µÄÐźŴ¦  
Àí³ÌÐòÖÐÓÖµ÷ÓÃÕâÑùµÄº¯Êý£¬ÕâʱÓֻᷢÉúÊ²Ã´ÄØ?ÔÚmallocÀýÖÐ×Ó£¬¿ÉÄÜ»á¶Ô½ø  
³ÌÔì³ÉÆÆ  
»µ£¬ÒòΪmallocͨ³£ÎªËüËù·ÖÅäµÄ´æ´¢Çø±£³ÖÒ»¸öÁ¬½Ó±í£¬¶ø²åÈëÖ´ÐÐÐźŴ¦Àí³Ì  
Ðòʱ£¬½ø  
³Ì¿ÉÄÜÕýÔÚ¸ü¸Ä´ËÁ¬½Ó±í¡£ÔÚgetpwnamµÄÀý×ÓÖУ¬Õý³£·µ»Ø¸øµ÷ÓÃÕßµÄÐÅÏ¢¿ÉÄÜÓÉ  
·µ»ØÖÁÐÅ  
ºÅ´¦Àí³ÌÐòµÄÐÅÏ¢¸²¸Ç¡£ª¥  
POSIXª±1˵Ã÷Á˱£Ö¤¿ÉÔÙÈëµÄº¯Êý¡£Í¼10ª±3ÁгöÁËÕâЩ¿ÉÔÙÈ뺯Êý¡£Í¼ÖÐËĸö´ø  
*ºÅµÄº¯Êý  
²¢Ã»Óа´POSIXª±1˵Ã÷ΪÊÇ¿ÉÔÙÈëµÄ£¬µ«SVR4 SVID ¡²AT&T1980¡³Ôò½«ËüÃÇÁÐΪÊÇ  
¿ÉÔÙÈë  
µÄ¡£ª¥  
ͼ10ª±3 ÔÚÐźŴ¦Àí³ÌÐòÖпÉÒÔµ÷ÓõĿÉÔÙÈ뺯Êýª¥  
ûÓÐÁÐÈëͼ10ª±3ÖеĴó¶àÊýº¯ÊýÊDz»¿ÉÔÙÈëµÄ£¬ÆäÔ­ÒòÊÇ(a)ÒÑÖªËüÃÇʹÓþ²Ì¬Êý  
¾Ý½á¹¹£¬  
ʽ(b)ËüÃǵ÷ÓÃmalloc»òFree£¬»ò(c)ËüÃÇÊDZê×¼I£¯Oº¯Êý¡£±ê×¼I£¯O¿âµÄºÜ¶àʵÏÖ  
¶¼ÒÔ²»¿É  
ÔÙÈ뷽ʽʹÓÃÈ«¾ÖÊý¾Ý½á¹¹¡£ª¥  
ÒªÁ˽âÔÚÐźŴ¦Àí³ÌÐòÖм´Ê¹µ÷ÓÃÁÐÓÚͼ10ª±3Öеĺ¯Êý£¬ÒòΪÿ¸ö½ø³ÌÖ»ÓÐÒ»¸ö  
errno±äÁ¿  
£¬ËùÒÔÎÒÃÇ¿ÉÄÜÐÞ¸ÄÁËÆäÔ­ÏȵÄÖµ¡£¿¼ÂÇÒ»¸öÐźŴ¦Àí³ÌÐò£¬ËüÇ¡ºÃÔÚmain¸ÕÉèÖà 
errnoÖ®  
ºó±»µ÷Óá£Èç¹û¸ÃÐźŴ¦Àí³ÌÐòµ÷ÓÃread£¬ÔòËü¿ÉÄܸü¸ÄerrnoµÄÖµ£¬´Ó¶øÈ¡´úÁË  
¸ÕÓÉmain  
ÉèÖõÄÖµ¡£Òò´Ë£¬×÷Ϊһ¸öͨÓõĹæÔò£¬µ±ÔÚÐźŴ¦Àí³ÌÐòÖе÷ÓÃͼ10ª±3ÖÐÁгö  
µÄº¯Êýʱ  
£¬Ó¦µ±ÔÚÆäǰ±£´æ£¬ÔÚºó»Ö¸´errno¡£(ÒªÁ˽⣬³£³£±»²¶×½µ½ÐźÅÊÇSIGCHLD£¬Æä  
ÐźŴ¦Àí  
³ÌÐòͨ³£Òªµ÷ÓÃÒ»ÖÖwaitº¯Êý£¬¶ø¸÷ÖÖwaitº¯Êý¶¼Äܸıäerrno¡£ª¥  
POSIXª±1ûÓаüÀ¨Í¼10ª±3ÖеÄlongjmpºÍsiglongjmp¡£(ÔÚ10ª±15½Ú½«ËµÃ÷siglon  
gjmpº¯Êý  
¡£)ÕâÊÇÒòΪÔÚÖ÷Àý³ÌÒÔ·ÇÔÙÈ뷽ʽÕýÔÚ¸üÐÂÒ»Êý¾Ý½á½á¹¹Ê±¿ÉÄܲúÉúÐźš£²»ÊÇ  
´ÓÐźŴ¦  
Àí³ÌÐò·µ»Ø¶øÊǵ÷ÓÃsiglongjmp£¬¿ÉÄÜʹ¸ÃÊý¾Ý½á¹¹ÊDz¿·Ö¸üеġ£Èç¹ûÓ¦ÓóÌÐò  
½«Òª×ö¸ü  
ÐÂÈ«¾ÖÊý¾Ý½á¹¹ÕâÑùµÄÊÂÇ飬¶øÍ¬Ê±¹æ¶¨Òª²¶×½Ä³Ð©Ðźţ¬¶øÕâЩÐźŵĴ¦Àí³ÌÐò  
ÓÖ»áÒýÆð  
Ö´ÐÐsiglongjmp£¬ÔòÔÚ¸üÐÂÕâÖÖÊý¾Ý½á¹¹Ê±Òª×èÈû´ËÖÖÐźš£ª¥  
ʵÀýª¥  
ÔÚ³ÌÐò10ª±2ÖУ¬ÐźŴ¦Àí³ÌÐòmy-alarmµ÷Óò»¿ÉÔÙÈ뺯Êýgetpwnam,¶ømy-alarmÿ  
ÃëÖÓ±»µ÷  
ÓÃÒ»´Î¡£10ª±10½ÚÖн«ËµÃ÷alarmº¯Êý¡£ÔÚ³ÌÐò10ª±2ÖÐÓÃÆäÿÃë²úÉúÒ»´Îª©SIGAL  
RMªªÐźŠ 
¡£ª¥  
ÔËÐд˳ÌÐòʱ£¬Æä½á¹û¾ßÓи½ÒâÐÔ¡£Í¨³££¬ÔÚÐźŴ¦Àí³ÌÐòµÚÒ»´Î·µ»ØÊ±£¬¸Ã³ÌÐò  
½«ÓÉSIGS  
EGVÐźÅÖÕÖ¹¡£¼ì²écoreÎļþ£¬´ÓÖпÉÒÔ¿´µ½mainº¯ÊýÒѵ÷ÓÃgetpwnam£¬¶øÇÒµ±ÐÅ  
ºÅ´¦Àí³Ì  
Ðòµ÷ÓôËͬһº¯Êýʱ£¬Ä³Ð©ÄÚ²¿Ö¸Õëʾ³öÁËÎÊÌ⡣żȻ£¬´Ë³ÌÐò»áÔËÐÐÈô¸ÉÃ룬Ȼ  
ºóÒò²úÉú  
SIGSEGVÐźŶøÖÕÖ¹¡£ÔÚ²¶×½µ½Ðźźó£¬Èômainº¯ÊýÈÔÕýÈ·ÔËÐУ¬Æä·µ»ØÖµÈ´ÓÐʱ  
´íÎó£¬ÓР 
ʱÕýÈ·¡£ÓÐʱÔÚÐźŴ¦Àí³ÌÐòÖе÷ÓÃgetpwnam»á³ö´í·µ»Ø£¬Æä³ö´íֵΪEBADF(ÎÞЧ  
ÎļþÃèÊö  
·û)¡£ª¥  
´Ó´ËʵÀýÖпÉÒÔ¿´³ö£¬ÈôÔÚÐźŴ¦Àí³ÌÐòÖе÷ÓÃÒ»¸ö²»¿ÉÔÙÈ뺯Êý£¬ÔòÆä½á¹ûÊDz»  
¿ÉÓè¼ûµÄ  
¡£ª¥  
¡¼£È£Ô£µ"£Ó£Ó¡½³ÌÐò10ª±2 ÔÚÐźŴ¦Àí³ÌÐòÖе÷Óò»¿ÉÔÙÈ뺯Êýª¥¡¼£È£Ô£µ£Ó£Ó  
¡½  
10ª±7¡þSIGCLDÓïÒ媥  
SIGCLDºÍSIGCHLDÕâÁ½¸öÐźž­³£Ò×ÓÚ»ìÏý¡£SIGCLDÊÇϵͳVµÄÒ»¸öÐźÅÃû£¬ÆäÓïÒå  
ÓëÃûΪSIGCHLDµÄBSDÐźŲ»Í¬¡£POSIXª±1Ôò±êÓÃBSDµÄSIGCHLDÐźš£ª¥  
BSD SIGCHLDÐźŵÄÓïÒåÓëÆäËüÐźŵÄÓïÒåÏàÀàËÆ¡£×Ó½ø³Ì״̬¸Ä±äºó²úÉú´ËÐźŠ 
£¬¸¸½ø³ÌÐèÒªµ÷ÓÃÒ»¸öwaitÀຯÊýÒÔ¼ì²â·¢ÉúÁËʲô¡£ª¥  
µ«ÊÇϵͳVÒòΪÀúÊ·ÑØÏ®£¬ÖÁ½ñËü´¦ÀíSIGCLDÐźŵķ½Ê½²»Í¬ÓÚÆäËüÐźš£Èç¹ûÓà 
signal»òsigset(ÉèÖÃÐźÅÅäÖõĽÏÀÏʽµÄSRV3¼æÈÝÐÔº¯Êý)ÉèÖÃÐźÅÅäÖã¬ÔòSVR4  
¼ÌÐøÁËÕâÒ»¾ßÓÐÎÊÌâÉ«²ÊµÄ´«Í³(¼´¼æÈÝÐÔÏÞÖÆ)¡£¶ÔSIGCLDµÄ½ÏÀÏ´¦Àí·½Ê½ÊÇ£ºª¥  
1ª±Èç¹û½ø³ÌÌØµØÖ¸Áî¶Ô¸ÃÐźŵÄÅäÖÃΪSIG-IGN£¬Ôòµ÷Óýø³ÌµÄ×Ó½ø³Ì½«²»²úÉú½©  
ËÀ½ø³Ì¡£  
×¢Ò⣬ÕâÓëÆäĬÈ϶¯×÷(SIG-DFL)ºöÂÔ(¼ûͼ10ª±1)²»Í¬¡£´úÖ®ÒÔ£¬ÔÚ×Ó½ø³ÌÖÕֹʱ  
£¬½«Æä״̬¶ªÆú¡£Èç¹ûµ÷Óýø³Ì×îºóµ÷ÓÃÒ»¸öwaitº¯Êý£¬ÄÇôËü½«×èÈûµ½ËùÓÐ×Ó½ø  
³Ì¶¼ÖÕÖ¹£¬È»ºó¸Ãwait»á·µ»Ø-1£¬ÆäerrnoÔòÉèÖÃΪECHILD¡£(´ËÐźŵÄĬÈÏÅäÖÃÊÇ  
ºöÂÔ£¬µ«Õâ²»»áÔì³ÉÉÏÊöÓïÒå¡£´úÖ®ÒÔÎÒÃDZØÐëÌØµØÖ¸¶¨ÆäÅäÖÃΪSIG-IGN¡£)ª¥  
   
POSIXª±1²¢ËµÃ÷ÔÚSIGCHLD±»ºöÂÔʱӦ²úÉúµÄºó¹û£¬ËùÒÔÕâÖÖÐÐΪÊÇÔÊÐíµÄ¡£ª¥  
4ª±3+BSDÖУ¬ÈçSIGCHLD±»ºöÂÔ£¬ÔòÔÊÐí²úÉú½©ËÀ×Ó½ø³Ì¡£Èç¹ûÒª±ÜÃ⽩ËÀ×Ó½ø³Ì  
£¬Ôò±ØÐë  
µÈ´ý×Ó½ø³Ì¡£ª¥  
ÔÚSVR4ÖУ¬Èç¹ûµ÷ÓÃsignal»òsigset½«SIGCHLDµÄÅäÖÃÉèÖÃΪºöÂÔ£¬Ôò²»»á²úÉú½©  
ËÀ×Ó½ø³Ì  
¡£ÁíÍ⣬ʹÓÃSVR4°æµÄsigaction£¬Ôò¿ÉÉèÖÃSA-NOCLDWAIT±êÖ¾(ͼ10ª±5)ÒÔ±ÜÃâ×Ó  
½ø³Ì½©ËÀ  
¡£ª¥  
2ª±Èç¹û½«SIGCLDµÄÅäÖÃÉèÖÃΪ²¶×½£¬ÔòϵͳºËÁ¢¼´¼ì²éÊÇ·ñÓÐ×Ó½ø³Ì×¼±¸ºÃ±»µÈ  
´ý£¬Èç¹û  
ÊÇÕâÑùÔòµ÷ÓÃSIGCLD´¦Àí³ÌÐò¡£ª¥  
µÚ¶þÏî¸Ä±äÁËΪ´ËÐźűàд´¦Àí³ÌÐòµÄ·½·¨¡£ª¥  
ʵÀýª¥  
ÔÚ10ª±4½ÚÖÐÔøËµ¹ý½øÈëÐźŴ¦Àí³ÌÐòºó£¬Ê×ÏÈÒªÔٴε÷ÓÃsignalÒÔÔÙÉèÖôËÐźŠ 
´¦Àí³ÌÐò  
¡£(ÔÚÐźű»¸´ÖÃΪÆäĬÈÏֵʱ£¬Ëü¿ÉÄܱ»¶ªÊ§£¬Á¢¼´ÖØÐÂÉèÖÿÉÒÔ¼õÉÙ´Ë´°¿Úʱ  
¼ä¡£)³ÌÐò  
10ª±3ÏÔʾÁËÕâÒ»µã¡£µ«´Ë³ÌÐò²»ÄÜÕý³£¹¤×÷¡£Èç¹ûÔÚSVR2ϱàÒë²¢ÔËÐд˳ÌÐò£¬  
ÔòÆäÊä³ö  
ÊDz»¶ÏÖØ¸´"SIGCLD received n"¡£×îºó½ø³ÌÓÃÍêÆäÕ»¿Õ¼ä²¢Òì³£ÖÕÖ¹¡£ª¥  
´Ë³ÌÐòµÄÎÊÌâÊÇ£ºÔÚÐźŴ¦Àí³ÌÐòµÄ¿ªÊ¼´¦µ÷ÓÃsignal£¬°´ÕÕÉÏÊöµÚ¶þÏϵͳºË  
¼ì²éÊÇ·ñ  
ÓÐÐèÒªµÈ´ýµÄ×Ó½ø³Ì(ÒòΪÎÒÃÇÕýÔÚ´¦ÀíÒ»¸öSIGCLD£¬ËùÒÔȷʵÓÐÕâÖÖ×Ó½ø³Ì)£¬Ëù  
ÒÔËü²úÉú  
ÁíÒ»¸ö¶ÔÐźŴ¦Àí³ÌÐòµÄµ÷Óá£ÐźŴ¦Àí³ÌÐòµ÷ÓÃsignal£¬Õû¸ö¹ý³ÌÔÙ´ÎÖØ¸´¡£ª¥  
   
ΪÁ˽â¾öÕâÒ»ÎÊÌ⣬Ӧµ±ÔÚµ÷ÓÃwaitÈ¡ÁË×Ó½ø³ÌµÄÖÕֹ״̬֮ºóÔÙµ÷ÓÃsignal¡£´Ë  
ʱ½öµ±Æä  
Ëü×Ó½ø³ÌÖÕÖ¹£¬ÏµÍ³ºËÔÙ»áÔٴβúÉú´ËÖÖÐźš£ª¥  
Èç¹ûΪSIGCHLD½¨Á¢ÁËÒ»¸öÐźŴ¦Àí³ÌÐò£¬ÓÖ´æÔÚÒ»¸öÒÑÖÕÖ¹µÄµ«ÉÐδµÈ´ýµÄ½ø³Ì  
£¬ÔòÊÇ·ñ  
»á²úÉúÐźÅ?POSIXª±1¶Ô´ËûÓÐ×÷˵Ã÷¡£ÕâÑù¾ÍÔÊÐíÇ°ÃæËùÊöµÄ¹¤×÷·½Ê½¡£µ«ÊÇ£¬  
ÒòΪPOSIX  
ª±1ÔÚÐźŷ¢Éúʱ²¢Ã»Óн«ÐźÅÅäÖø´ÖÃΪÆäĬÈÏÖµ(¼Ù¶¨ÎÒÃÇÕýÓÃPOSIXª±1µÄsig  
actionº¯  
ÊýÉèÖÃÆäÅäÖÃ)£¬ÓÚÊÇÔÚSIGCHLD´¦Àí³ÌÐòÖÐÒ²¾Í²»±ØÔÙΪ¸ÃÐźÅÖ¸¶¨Ò»¸öÐźŴ¦Àí  
³ÌÐò¡£ª¥  
Îñ±ØÁ˽âÄãËùÓõÄϵͳÖÐSIGCHLDÐźŵÄÓïÒå¡£Ò²Ó¦Á˽âÔÚijЩϵͳÖÐ#define SI  
GCHLDΪSI  
GCLD»ò·´Ö®¡£¸ü¸ÄÕâÖÖÐźŵÄÃû×ÖʹÄã¿ÉÒÔ±àÒëΪÁíÒ»¸öϵͳ±àдµÄ³ÌÐò£¬µ«ÊÇÈç  
¹û¸Ã³ÌÐò  
ʹÓøÃÐźŵÄÁíÒ»ÖÖÓïÒ壬ÔòÕâÑùµÄ³ÌÐòÒ²²»Äܹ¤×÷¡£ª¥  
¡¼£È£Ô£µ"£Ó£Ó¡½³ÌÐò10ª±3 ²»ÄÜÕý³£¹¤×÷µÄϵͳV¡¡SIGCLD´¦Àí³ÌÐòª¥¡¼£È£Ô£µ£Ó  
£Ó¡½  
10ª±8¡þ¿É¿¿ÐźÅÊõÓïºÍÓïÒ媥  
ÎÒÃÇÐèÒª¶¨ÒåһЩÔÚÌÖÂÛÐźÅʱ»áÓõ½µÄÊõÓï¡£Ê×ÏÈ£¬µ±Ôì³ÉÐźŵÄʼþ·¢Éúʱ£¬  
Ϊ½ø³Ì²ú  
ÉúÒ»¸öÐźÅ(»òÏòÒ»¸ö½ø³Ì·¢ËÍÒ»¸öÐźÅ)¡£Ê¼þ¿ÉÒÔÊÇÓ²¼þÒì³£(ÀýÈç³ýÒÔ0)¡¢Èí  
¼þÌõ¼þ(Àý  
È磬ÄÖÖÓʱ¼ä³¬¹ý)¡¢Öն˲úÉúµÄÐźŻòµ÷ÓÃkillº¯Êý¡£ÔÚ²úÉúÁËÐźÅʱ£¬ÏµÍ³ºË  
ͨ³£ÔÚ½ø  
³Ì±íÖÐÉèÖÃijÖÖÐÎʽµÄÒ»¸ö±êÖ¾¡£µ±¶ÔÐźÅ×öÁËÕâÖÖ¶¯×÷ʱ£¬ÎÒÃÇ˵ÏòÒ»¸ö½ø³ÌµÝ  
ËÍÁËÒ»  
¸öÐźš£ÔÚÐźŲúÉúºÍµÝËÍÖ®¼äµÄʱ¼ä¼ä¸ôÄÚ£¬ÎÒÃdzÆÐźÅÄ©¾ö¡£ª¥  
½ø³Ì¿ÉÒÔÑ¡ÓÃ"ÐźÅËÍËÍ×èÈû"¡£Èç¹ûΪ½ø³Ì²úÉúÁËÒ»¸öÑ¡ÔñΪ×è庠Ðźţ¬¶øÇÒ¶Ô  
¸ÃÐźŠ 
µÄ¶¯×÷ÊÇϵͳĬÈ϶¯×÷»ò²¶×½¸ÃÐźţ¬ÔòΪ¸Ã½ø³Ì½«´ËÐźű£³ÖΪĩ¾ö״̬£¬Ö±µ½  
¸Ã½ø³Ì(a  
)¶Ô´ËÐźŽâ³ýÁË×èÈû£¬»òÕß(b)½«¶Ô´ËÐźŵ͝×÷¸ü¸ÄΪºöÂÔ¡£µ±´«ËÍÒ»¸öÔ­À´±»  
×èÈûµÄÐÅ  
ºÅ¸ø½ø³Ìʱ£¬¶ø²»ÊÇÔÚ²úÉú¸ÃÐźÅʱ£¬ÏµÍ³ºËÔÙ¾ö¶¨¶ÔËüµÄ´¦Àí·½Ê½¡£ÓÚÊǽø³ÌÔÚ  
ÐźŴ«ËÍ  
¸øËü֮ǰÈԿɸıä¶ÔËüµÄ¶¯×÷¡£½ø³Ìµ÷ÓÃsigpendingº¯Êý(10ª±13½Ú)½«Ö¸¶¨µÄÐźŠ 
ÉèÖÃΪ×è  
ÈûµÄδ¾ö¡£ª¥  
Èç¹ûÔÚ½ø³Ì½â³ý¶Ôij¸öÐźŵÄ×èÈû֮ǰ£¬ÕâÖÖÐźŷ¢ÉúÁ˶à´Î£¬Õ⽫ÈçºÎÄØ?POSI  
Xª±1ÔÊÐí  
ϵͳµÝË͸ÃÐźÅÒ»´Î»ò¶à´Î¡£Èç¹ûϵͳµÝË͸ÃÐźŶà´Î£¬ÔòÎÒÃÇÏÈÕâЩÐźÅÅÅÁ˶Ӡ 
¡£µ«ÊÇ´ó  
¶àÊýUnix²¢²»ÅŶÓÐźš£´úÖ®ÒÔ£¬UnixϵͳºËÖ»´«ËÍÕâÖÖÐźÅÒ»´Î¡£ª¥  
ÔçÆÚϵͳV°æ±¾µÄÊÖ²áÒ³³ÆSIGCLDÐźÅÊÇÓÃÅŶӷ½Ê½´¦ÀíµÄ£¬µ«Êµ¼Ê²¢·ÇÈç´Ë¡£´ú  
Ö®ÒÔ£¬Ïµ  
ͳºË°´10ª±7½ÚÖÐËùÊö·½Ê½²úÉú´ËÐźš£AT&T¡²£±£¹9£°e¡³µÄsigaction(2)ÊÖ²áÒ³  
³ÆSA-SIGI  
NFO±êÖ¾(ͼ10ª±5)ʹÐźſɿ¿µØÅŶӣ¬ÕâÒ²²»ÕýÈ·¡£±íÃæÉϴ˹¦ÄÜ´æÔÚÓÚϵͳºËÄÚ  
µ«ÔÚ£¬SV  
R4Öв¢²»Æð×÷Óᣪ¥  
Èç¹ûÓжà¸öÐźÅÒª´«Ë͸øÒ»¸ö½ø³Ì£¬Ôò½«ÈçºÎÄØ?POSIXª±1²¢Ã»Óй涨ÕâЩÐźŴ«  
Ë͸ø½ø³Ì  
µÄ˳Ðò¡£µ«ÊÇPOSIXª±1µÄÔ­Àí²ûÊö²¿·Ö½¨Ò飺Óë½ø³Ìµ±Ç°×´Ì¬ÓйصÄÐźţ¬ÀýÈçS  
IGSEGVÔÚ  
ÆäËüÐźÅ֮ǰ´«ËÍ¡£ª¥  
ÿ¸ö½ø³Ì¶¼ÓÐÒ»¸öÐÅºÅÆÁ±Î×Ö£¬Ëü¹æ¶¨Á˵±Ç°Òª×èÈû´«Ë͵½¸Ã½ø³ÌµÄÐźż¯¡£¶Ôÿ  
ÖÖ¿ÉÄܵĠ 
ÐźÅÔÚ¸ÃÆÁ±Î×ÖÖж¼ÓÐһλÓëÖ®¶ÔÓ¦¡£¶ÔÓÚijÖÖÐźţ¬Æä¶ÔӦλÉèÖã¬ÔòËüµ±Ç°ÊÇ  
±»×èÈûµÄ  
¡£Ò»¸ö½ø³Ì¿ÉÒÔµ÷ÓÃsigprocmask(ÔÚ10ª±12½ÚÖÐ˵Ã÷)À´¼ì²âºÍ¸ü¸ÄÆäµ±Ç°ÐÅºÅÆÁ  
±Î×Ö¡£ª¥  
ÐźÅÊý¿ÉÄܻᳬ¹ýÒ»¸öÕûÐÍÊýËù°üº¬µÄ¶þ½øÖÆÎ»Êý£¬Îª´ËPOSIXª±1¶¨ÒåÁËÒ»¸öÐÂÊý  
¾ÝÀàÐÍ£¬  
sigset-t£¬Ëü±£³ÖÒ»¸öÐźż¯¡£ÀýÈ磬ÐÅºÅÆÁ±Î×־ͱ£´æÔÚÕâЩÐźż¯ÖеÄÒ»¸öÖР 
¡£10ª±11  
½ÚÖн«ËµÃ÷¶ÔÐźż¯½øÐвÙ×÷µÄÎå¸ö»­Êý¡£ª¥  
10ª±9¡þkillºÍraiseº¯Êýª¥  
killº¯Êý½«Ò»¸öÐźŷ¢Ë͸øÒ»¸ö½ø³Ì»òÒ»¸ö½ø³Ì×é¡£raiseº¯ÊýÔòÔÊÐíÒ»¸ö½ø³ÌÏò  
×ÔÉí·¢ËÍ  
Ò»¸öÐźš£ª¥  
raiseÊÇÓÉANSI C¶ø·ÇPOSIXª±1¶¨ÒåµÄ¡£ÒòΪANSI C²¢²»Éæ¼°¶à½ø³Ì£¬ËùÒÔËü²»ÄÜ  
¶¨ÒåÈçkil  
lÕâÑùÒªÓÐÒ»¸ö½ø³ÌID×÷ΪÆä²ÎÊýµÄº¯Êý¡£ª¥  
#include<sys£¯typesª±h>ª¥  
#include<signalª±h>ª¥  
int kill(pid ¼£Ã£Ä££ª³£²¡½t pid,int signo);ª¥  
int raise(int signo);ª¥  
Á½¸öº¯Êý·µ»Ø£ºÈô³É¹¦Îª0£¬³ö´íΪ-1ª¥  
killµÄpid²ÎÊýÓÐËÄÖÖ²»Í¬µÄÇé¿ö¡£ª¥  
pid>0 ½«Ðźŷ¢Ë͸ø½ø³ÌIDΪpidµÄ½ø³Ì¡£ª¥  
pid==0 ½«Ðźŷ¢Ë͸øÆä½ø³Ì×éID¹ØÓÚ·¢Ëͽø³ÌµÄ½ø³Ì×éID£¬¶øÊÇ·¢Ëͽø³ÌÓÐÐí¿É  
ÊýÎÊÆä·¢  
ËÍÐźŵÄËùÓнø³Ì¡£ª¥  
ÕâÀïÓõÄÊõÓï"ËùÓнø³Ì"²»°üÀ¨ÊµÏÖ¶¨ÒåµÄϵͳ½ø³Ì¼¯¡£¶ÔÓÚ´ó¶àÊýUnixϵͳ£¬Ïµ  
ͳ½ø³Ì  
¼¯°üÀ¨£º½»»»½ø³Ì(pido)£¬init(pid1)ÒÔ¼°Ò³¾«Áé½ø³Ì(pid2)¡£ª¥  
pid<0 ½«Ðźŷ¢Ë͸øÆä½ø³Ì×éIDµÈÓÚpid¾ø¶ÔÖµ£¬¶øÇÒ·¢Ëͽø³ÌÓÐÐí¿ÉȨÏòÆä·¢ËÍ  
ÐźŵÄËù  
Óнø³Ì¡£ÈçÉÏËùÊöÒ»Ñù£¬"ËùÓнø³Ì"²¢²»°üÀ¨ÏµÍ³½ø³Ì¼¯ÖеĽø³Ì¡£ª¥  
pid==-1 POSIXª±1䶨Òå´ËÖÖÇé¿ö¡£ª¥  
SVR4ºÍ4ª±3+BSDÓô˹㲥Ðźš£Ôڹ㲥ÐźÅʱ£¬²¢²»°ÑÐźŷ¢Ë͸øÉÏÊöϵͳ½ø³Ì¼¯  
¡£4ª±3+B  
SDÒ²²»½«¹ã²¥Ðźŷ¢Ë͸ø·¢Ëͽø³Ì×ÔÉí¡£Èôµ÷ÓÃÕßÊdz¬¼¶Óû§£¬Ôò½«Ðźŷ¢Ë͸øËù  
Óнø³Ì¡£  
Èç¹ûµ÷ÓÃÕß²»Êdz¬¼¶Óû§£¬Ôò½«Ðźŷ¢Ë͸øÆäʵ¼ÊÓû§ID»ò±£´æµÄλÖÃ-Óû§-IDµÈ  
ÓÚµ÷ÓÃÕß  
µÄʵ¼Ê»òÓÐЧÓû§IDµÄËùÓнø³Ì¡£¹ã²¥ÐźÅÖ»ÄÜÓÃÓÚ¹ÜÀí·½Ãæ(ÀýÈçÒ»¸ö³¬¼¶Óû§  
½ø³Ì½«¸Ã  
ϵͳֹͣÔËÐÐ)¡£ª¥  
ÉÏÃæÔøÌá¼°£¬Ò»¸ö½ø³Ì½«Ò»¸öÐźŷ¢Ë͸øÆäËü½ø³ÌÐèÒªÐí¿ÉȨ¡£³¬¼¶Óû§¿É½«ÐźŠ 
·¢Ë͸øÁí  
Ò»¸ö½ø³Ì¡£¶ÔÓÚÆäËü£¬Æä»ù±¾¹æÔòÊÇ·¢ËÍÕßµÄʵ¼Ê»òÓÐЧÓû§ID±ØÐëµÈÓÚ½ÓÊÕÕߵĠ 
ʵ¼Ê»òÓР 
ЧÓû§ID¡£Èç¹ûʵÏÖÖ§³Ö-POSIX-SAVED-IDS(ÈçSVR4Ëù×öµÄÄÇÑù)£¬ÔòÓñ£´æµÄÉèÖà 
-Óû§-ID  
´úÌæÓÐЧÓû§ID¡£ª¥  
ÔÚ¶ÔÐí¿ÉȨ½øÐвâÊÔʱҲÓÐÒ»¸öÌØÀý£ºÈç¹û±»·¢Ë͵ÄÐźÅÊÇSIGCONT£¬Ôò½ø³Ì¿É½«  
Ëü·¢Ë͸ø  
ÊôÓÚͬһ¶Ô»°ÆÚµÄÈÎÒ»ÆäËü½ø³Ì¡£ª¥  
POSIXª±1½«ÐźűàºÅ0¶¨ÒåΪ¿ÕÐźš£Èç¹ûsigno²ÎÊýÊÇ0£¬ÔòkillÈÔÖ´ÐÐÕý³£µÄ´í  
Îó¼ì²é£¬  
µ«²»·¢ËÍÐźš£Õâ³£±»ÓÃÀ´È·¶¨Ò»¸öÌØ¶¨½ø³ÌÊÇ·ñÈԾɴæÔÚ¡£Èç¹ûÏòÒ»¸ö²¢²»´æÔÚ  
µÄ½ø³Ì·¢  
ËÍ¿ÕÐźţ¬Ôòkill·µ»Ø-1£¬errnoÔò±»ÉèÖÃΪESRCH¡£µ«ÊÇ£¬Ó¦µ±Á˽⣬UnixϵͳÔÚ  
¾­¹ýÒ»¶¨  
ʱ¼äºó»áÖØÐÂʹÓýø³ÌID£¬ËùÒÔÒ»¸öÏÖ´æµÄ¾ßÓÐËù¸ø¶¨½ø³ÌIDµÄ½ø³Ì²¢²»Ò»¶¨¾ÍÊÇ  
ÄãËùÏëÒª  
µÄ½ø³Ì¡£ª¥  
Èç¹ûkillµ÷ÓÃΪµ÷Óýø³Ì²úÉúÐźţ¬¶øÇÒ´ËÐźÅÊDz»±»×èÈûµÄ£¬ÄÇôÔÚkill·µ»ØÖ®  
ǰ£¬»òÕß  
signo£¬»òÕßij¸öÆäËüδ¾öµÄ£¬·Ç×èÈûÐźű»´«ËͺŸýø³Ì¡£ª¥  
10ª±10¡þalarmºÍpauseº¯Êýª¥  
ʹÓÃalarmº¯Êý¿ÉÒÔÉèÖÃÒ»¸öʱ¼äÖµ(ÄÖÖÓʱ¼ä)£¬ÔÚ½«À´µÄij¸öʱ¿Ì¸Ãʱ¼äÖµ»á±»  
³¬¹ý¡£µ±  
ËùÉèÖõÄʱ¼äÖµ±»³¬¹ýºó£¬²úÉúSIGALRMÐźš£Èç¹û²»ºöÂÔ»ò²»²¶×½´ËÐźţ¬ÔòÆä  
ĬÈ϶¯×÷  
ÊÇÖÕÖ¹¸Ã½ø³Ì¡£ª¥  
#include<unistdª±h>ª¥  
unsigned int alarm(unsigned int seconds);ª¥  
Returns:0 or number of ·µ»Ø£º0»òÒÔǰÉèÖõÄÄÖÖÓʱ¼äµÄÓàÁôÃëÊýª¥  
ÆäÖУ¬²ÎÊýsecondsµÄÖµÊÇÃëÊý£¬¾­¹ýÁËËùÖ¸¶¨µÄsecondsÃëºó»á²úÉúÐźÅSIGALRM  
¡£ÒªÁ˽⠠
µÄÊÇ£¬¾­¹ýÁËÖ¸¶¨Ãëºó£¬ÐźÅÊÇÓÉϵͳ²úÉúµÄ£¬ÓÉÓÚ½ø³Ìµ÷¶ÈµÄÑÓ³Ù£¬½ø³ÌµÃµ½¿Ø  
ÖÆÄܹ»´¦  
Àí¸ÃÐźŻ¹ÐèÒ»¶Îʱ¼ä¡£ª¥  
ÔçÆÚµÄUnix°æ±¾Ôø¾¯¸æ£¬ÕâÖÖÐźſÉÄܱÈÓ趨ֵÌáǰ1Ãë·¢ËÍ¡£POSIXª±1Ôò²»ÔÊÐí  
ÕâÑù×ö¡£  
ª¥ª¥  
ÿ¸ö½ø³ÌÖ»ÄÜÓÐÒ»¸öÄÖÖÓʱ¼ä¡£Èç¹ûÔÚµ÷ÓÃalarmʱ£¬ÒÔǰÒÑΪ¸Ã½ø³ÌÉèÖùýÄÖÖÓ  
ʱ¼ä£¬¶ø  
ÇÒËü»¹Ã»Óг¬Ê±£¬Ôò¸ÃÄÖÖÓʱ¼äµÄÓàÁôÖµ×÷Ϊ±¾´Îalarmº¯Êýµ÷ÓõÄÖµ·µ»Ø¡£ÒÔǰ  
µÇ¼ÇµÄÄÖ  
ÖÓʱ¼äÔò±»ÐÂÖµ´ú»»¡£ª¥  
Èç¹ûÓÐÒÔǰµÇ¼ÇµÄÉÐ䳬¹ýµÄÄÖÖÓʱ¼ä£¬¶øÇÒsecondsÖµÊÇ0£¬ÔòÈ¡ÏûÒÔǰµÄÄÖÖÓʱ  
¼ä¡£Ç°ÄÖ  
ÖÓʱ¼äµÄÓàÁôÖµÈÔ×÷Ϊº¯ÊýµÄ·µ»ØÖµ¡£ª¥  
ËäÈ»SIGALRMµÄĬÈ϶¯×÷ÊÇÖÕÖ¹½ø³Ì£¬µ«ÊÇ´ó¶àÊýʹÓÃÄÖÖӵĽø³Ì²¶×½´ËÐźš£Èç  
¹û´Ëʱ½ø  
³ÌÒªÖÕÖ¹£¬ÔòÔÚÖÕֹ֮ǰËü¿ÉÒÔÖ´ÐÐËùÐèµÄÇå³ý²Ù×÷¡£ª¥  
pauseº¯Êýʹµ÷Óýø³Ì¹ÒÆðÖ±ÖÁ²¶×½µ½Ò»¸öÐźš£ª¥  
#include<unistdª±h>ª¥  
int pause(void);ª¥  
·µ»Ø£º-1 errnoÉèÖÃΪEINTRª¥  
Ö»ÓÐÖ´ÐÐÁËÒ»¸öÐźŴ¦Àí³ÌÐò²¢´ÓÆä·µ»ØÊ±£¬pauseÔÙ·µ»Ø¡£ÔÚÕâÖÖÇé¿öÏ£¬paus  
e·µ»Øª©-1  
£¬ªªerrnoÉèÖÃΪEINTR¡£ª¥  
ʵÀýª¥  
ʹÓÃalarmºÍpause£¬½ø³Ì¿Éʹ×Ô¼ºË¯ÃßÒ»¶ÎÖ¸¶¨µÄʱ¼ä¡£³ÌÐò10ª±4ÖеÄsleepº¯Êý  
ÌṩÕâÖÖ  
¹¦ÄÜ¡£ª¥  
³ÌÐò10ª±4 sleep1µÄ¼ò»¯µ«²¢²»ÍêÕûµÄʵÏÖª¥  
sleep1º¯Êý¿´ÆðÀ´Ó뽫ÔÚ10ª±19½ÚÖÐ˵Ã÷µÄsleepº¯ÊýÀàËÆ£¬µ«ÕâÖÖ¼ò»¯µÄʵÏÖÓР 
ÏÂÁÐÎÊÌâ  
¡£ª¥  
1ª±Èç¹ûµ÷ÓÃÕßÒÑÉèÖÃÁËÄÖÖÓ£¬ÔòËü±»sleeplº¯ÊýÖеĵÚÒ»´Îalarmµ÷ÓòÁÈ¥¡£ª¥  
¿ÉÓÃÏÂÁз½·¨¸üÕýÕâÒ»µã£º¼ì²éµÚÒ»´Îµ÷ÓÃalarmµÄ·µ»ØÖµ£¬ÈçÆäСÓÚ±¾´Îµ÷ÓÃal  
armµÄ²ÎÊý  
Öµ£¬ÔòÖ»Ó¦µÈµ½¸Ãǰ´Î·ÅÖõÄÄÖÖÓʱ¼ä³¬Ê±¡£Èç¹ûǰ´ÎÉèÖõÄÄÖÖÓʱ¼äµÄ³¬Ê±Ê±¿Ì  
ºóÓÚ±¾´Î  
ÉèÖÃÖµ£¬ÔòÔÚsleeplº¯Êý·µ»ØÖ®Ç°£¬ÒªÔÙÉèÖÃÄÖÖÓʱ¼ä£¬Ê¹ÆäÔÚÓ趨ʱ¼äÔÙ·¢Éú³¬  
ʱ¡£ª¥  
2ª±¸Ã³ÌÐòÖÐÐÞ¸ÄÁ˶ÔSIGALRMµÄÅäÖá£Èç¹û±àдÁËÒ»¸öº¯Êý¹©ÆäËüº¯Êýµ÷Óã¬ÔòÔÚ  
¸Ãº¯Êý±»  
µ÷ÓÃʱÏÈÒª±£´æÔ­ÅäÖã¬ÔÚ±¾º¯Êý·µ»ØÇ°ÔÙ»Ö¸´Ô­ÅäÖᣪ¥  
¸ü¸ÄÕâÒ»µãµÄ·½·¨ÊÇ£º±£´æsignalº¯ÊýµÄ·µ»ØÖµ£¬ÔÚ·µ»ØÇ°»Ö¸´ÉèÖÃÔ­ÅäÖᣪ¥  
3ª±²»µ÷ÓÃalarmºÍpauseÖ®¼äÓÐÒ»¸ö¾¹Ì¬Ìõ¼þ¡£ÔÚÒ»¸öºÜ·±Ã¦µÄϵͳÖУ¬¿ÉÄÜalar  
mÔÚµ÷ÓÃpa  
use֮ǰ³¬Ê±£¬²¢µ÷ÓÃÁËÐźŴ¦Àí³ÌÐò¡£Èç¹û·¢ÉúÁËÕâÖÖÇé¿ö£¬ÔòÔÚ½ø³Ìµ÷ÓÃpaus  
eºó£¬Èç¹û  
ûÓв¶×½µ½ÆäËüÐźÅËü¾ÍÓÀÔ¶±»¹ÒÆð¡£ª¥  
ÔçÆÚµÄsleepʵÏÖÓë³ÌÐò10ª±4ÀàËÆ£¬µ«¸üÕýÁËÎÊÌâ1ºÍ2¡£ÓÐÁ½ÖÖ·½·¨¿ÉÒÔ¸üÕýÎÊÌâ  
3¡£µÚÒ»  
ÖÖ·½·¨ÊÇʹÓÃsetjmp£¬ÏÂÃæÁ¢¼´ËµÃ÷ÕâÖÖ·½·¨¡£ÁíÒ»ÖÖ·½·¨ÊÇʹÓÃsigprocmaskºÍ  
sigsusp  
end£¬ÔÚ10ª±19½ÚÖн«ËµÃ÷ÕâÖÖ·½·¨¡£ª¥  
ʵÀýª¥  
SVR2ÖеÄSleepʵÏÖʹÓÃÁËsetjmpºÍlongjmp(¼û7ª±10½Ú)ÒÔ±ÜÃâÎÊÌâ3ÖÐËù˵Ã÷µÄ¾¹  
̬Ìõ¼þ  
¡£´Ëº¯ÊýµÄÒ»¸ö¼ò»¯°æ±¾£¬³ÆÎªsleep2£¬Ê¾ÓÚ³ÌÐò10ª±5ÖÐ(ΪÁËËõ¶ÌÕâһʵ¼ÊµÄ³¤  
¶È£¬Ôڳ̠ 
ÐòÖÐûÓд¦ÀíÉÏÃæËù˵µÄÎÊÌâ1ºÍ2¡£)ª¥  
¡¼£È£Ô£µ"£Ó£Ó¡½³ÌÐò10ª±5 SleepµÄÁíÒ»¸ö²»ÍêÉÆµÄʵÏÖª¥¡¼£È£Ô£µ£Ó£Ó¡½  
Ôڴ˺¯ÊýÖУ¬³ÌÐò10ª±4¾ßÓеľ¹Ì¬Ìõ¼þÒѱ»±ÜÃâ¡£¼´Ê¹pause´ÓδִÐУ¬ÔÚ·¢ÉúS  
IGALRMʱ  
£¬sleep2º¯ÊýÒ²·µ»Ø¡£ª¥  
µ«ÊÇ£¬sleep2º¯ÊýÖÐÈ´ÓÐÁíÒ»¸öÄÑÓÚ²ì¾õµÄÎÊÌ⣬ËüÉæ¼°µ½ÓëÆäËüÐźŵĻ¥Ïà×÷Óà 
¡£Èç¹ûSI  
GALRMÖжÏÁËij¸öÆäËüÐźŴ¦Àí³ÌÐò£¬Ôòµ÷ÓÃlongjmp¾Í»áÌáÔçÖÕÖ¹¸ÃÐźŴ¦Àí³ÌÐò  
¡£³ÌÐò10  
ª±5ÏÔʾÁËÕâÖÖÇé¿ö¡£ÔÚSININT´¦Àí³ÌÐòÖеÄforÑ­»·Óï¾äÆäÖ´ÐÐʱ¼äÔÚ×÷ÕßËùÓõĠ 
ϵͳÉϻᳬ¹ý5ÃëÖÓ£¬Ò²¾ÍÊÇ´óÓÚsleep2µÄ²ÎÊýÖµ£¬ÕâÕýÊÇÎÒÃÇËùÏëÒªµÄ¡£ÕûÐͱäÁ¿  
j˵Ã÷Ϊvolatile£¬ÕâÑù¾Í×èÖ¹ÁËÓÅ»¯±àÒë³ÌÐò³ýȥѭ»·Óï¾ä¡£Ö´ÐгÌÐò10ª±6µÃµ½£ºª¥  
$ aª±outª¥  
^? ¼üÈëÖжÏ×Ö·ûª¥  
sig-int startingª¥  
sleep2 returned:0ª¥  
¡¼£È£Ô£µ"£Ó£Ó¡½³ÌÐò10ª±6 ÔÚÒ»¸ö²¶×½ÆäËüÐźŵijÌÐòÖе÷ÓÃsleep2ª¥¡¼£È£Ô£µ  
£Ó£Ó¡½  
´ÓÖпɼûsleep2º¯ÊýËùÒýÆðµÄlongjmpʹÁíÒ»¸öÐźŴ¦Àí³ÌÐòsig-intÌáÔçÖÕÖ¹¡£Èç  
¹û½«SVR2µÄSleepº¯ÊýÓëÆäËüÐźŴ¦Àí³ÌÐòÒ»ÆðʹÓã¬Äã¾Í¿ÉÄÜÅöµ½ÕâÖÖÇé¿ö¡£¼û  
Á·Ï°10ª3¡£sleep1ºÍsleep2º¯ÊýÕâÁ½¸öʵÀýµÄÄ¿µÄÊǸæËßÎÒÃÇÔÚÉæ¼°µ½ÐźÅʱÐèÒª  
Óо«Ï¸¶øÖܵ½µÄ¿¼ÂÇ¡£ÏÂÃæ¼¸½Ú½«ËµÃ÷½â¾öÕâЩÎÊÌâµÄ·½·¨£¬Ê¹ÎÒÃÇÄܹ»¿É¿¿µØ£¬  
ÔÚ²»Ó°ÏìÆäËü´úÂë¶ÎµÄÇé¿öÏ´¦ÀíÐźš£ª¥  
ʵÀýª¥  
³ýÁËÓÃÀ´ÊµÏÖsleepº¯ÊýÍ⣬alarm»¹³£ÓÃÓÚ¶Ô¿ÉÄÜ×èÈûµÄ²Ù×÷ÉèÖÃÒ»¸öʱ¼äÉÏÏÞÖµ  
¡£ÀýÈ磬³ÌÐòÖÐÓÐÒ»¸ö¶ÁµÍËÙÉ豸µÄ»á×èÈûµÄ²Ù×÷(¼û10ª±5)£¬ÎÒÃÇÏ£ÍûËü³¬¹ýÒ»  
¶¨Ê±¼äÁ¿ºó¾ÍÒ»¶¨  
ÖÕÖ¹¡£³ÌÐò10ª±7ʵÏÖÁËÕâÒ»µã£¬Ëü´Ó±ê×¼ÊäÈë¶ÁÒ»ÐУ¬È»ºó½«Æäдµ½±ê×¼Êä³öÉÏ  
¡£ª¥  
¡¼£È£Ô£µ"£Ó£Ó¡½³ÌÐò10ª±7 ´øÊ±¼äÏÞÖÆµ÷ÓÃreadª¥¡¼£È£Ô£µ£Ó£Ó¡½  
ÕâÖÖ´úÂëÐòÁÐÔںܶàUnixÓ¦ÓóÌÐòÖж¼Äܼûµ½£¬µ«ÊÇÕâÖÖ³ÌÐòÓÐÁ½¸öÎÊÌ⣺ª¥  
1ª±³ÌÐò10ª±7ÓгÌÐò10ª±4ÖеÄͬÑùÎÊÌ⣺ÔÚµÚÒ»¸öalarmµ÷ÓúÍreadÖ®¼äÓÐÒ»¸ö¾º  
̬Ìõ¼þ¡£  
Èç¹ûϵͳºËÔÚÕâÁ½¸öº¯Êýµ÷ÓÃÖ®¼äʹ½ø³Ì²»ÄÜÕ¼Óô¦Àí»úÔËÐУ¬¶øÆäʱ¼ä³¤¶ÈÓÖ³¬  
¹ýÄÖÖÓʱ  
¼ä£¬Ôòread¿ÉÄÜÓÀÔ¶×èÈû¡£ÕâÖÖÀàÐ͵Ĵó¶àÊý²Ù×÷ʹÓýϳ¤µÄÄÖÖÓʱ¼ä£¬ÀýÈç1·Ö  
ÖÓ»ò¸ü³¤  
Ò»µã£¬Ê¹ÕâÖÖÎÊÌâ²»»á·¢Éú£¬µ«ÎÞÂÛÈçºÎÕâÊÇÒ»¸ö¾ºÌ¬Ìõ¼þ¡£ª¥  
2ª±Èç¹ûϵͳµ÷ÓÃÊÇ×Ô¶¯ÔÙÆð¶¯µÄ£¬Ôòµ±´ÓSIGALRMÐźŴ¦Àí³ÌÐò·µ»ØÊ±£¬read²¢²»  
±»ÖÕÖ¹¡£  
ÔÚÕâÖÖÇéÐÎÏ£¬ÉèÖÃʱ¼äÏÞÖÆ²»»áÆð×÷Óᣪ¥  
ÔÚÕâÀïÎÒÃÇȷʵÐèÒªÖÕÖ¹ÂýËÙϵͳµ÷Óᣵ«ÊÇ£¬POSIXª±1²¢Î´ÌṩһÖÖ¿ÉÒÆÖ²µÄ·½  
·¨ÊµÏÖÕâ  
Ò»µã¡£ª¥  
ʵÀýª¥  
ÈÃÎÒÃÇÓÃlongjmpÔÙʵÏÖÇ°ÃæµÄʵÀý¡£Ê¹ÓÃÕâÖÖ·½·¨ÎÒÃǾÍÎÞÐèµ£ÐÄÒ»¸öÂýËÙµÄϵ  
ͳµ÷ÓÃÊÇ  
·ñ±»Öжϡ£ª¥  
³ÌÐò10ª±8 Ê¹ÓÃlongjmp£¬´øÊ±¼äÏÞÖÆµ÷ÓÃreadª¥  
²»¹ÜϵͳÊÇ·ñÖØÐÂÆð¶¯ÏµÍ³µ÷Ó㬸óÌÐò¶¼»áÈçËùÓèÆÚµÄÄÇÑù¹¤×÷¡£µ«ÊÇÒªÀí½â£¬  
¸Ã³ÌÐòÈÔ  
¾ÉÓÐÓë³ÌÐò10ª±5Ò»ÑùµÄÓëÆäËüÐźŴ¦Àí³ÌÐòÏ໥×÷ÓõÄÎÊÌâ¡£ª¥  
Èç¹ûÒª¶ÔI£¯O²Ù×÷ÉèÖÃʱ¼äÏÞÖÆ£¬ÔòÈçÉÏËùʾ¿ÉÒÔʹÓÃlongjmp£¬µ±È»Ò²ÒªÀí½âËü  
¿ÉÄÜÓÐÓë  
Æä  
ËüÐźŴ¦Àí³ÌÐòÏ໥×÷ÓõÄÎÊÌâ¡£ÁíÒ»ÖÖÑ¡ÔñÊÇʹÓÃselect»òpollº¯Êý£¬ÔÚ12ª±5  
ª±1ºÍ12ª±  
5ª±2½«¶ÔËüÃǽøÐÐ˵Ã÷¡£ª¥  
10ª±11¡þÐźż¯ª¥  
ÎÒÃÇÐèÒªÓÐÒ»¸öÄܱíʾ¶à¸öÐźš¼CD2¡½Ðźż¯µÄÊý¾ÝÀàÐÍ¡£½«ÔÚsigprocmask(Ï  
Ò»½ÚÖÐ˵  
Ã÷)ÕâÑùµÄº¯ÊýÖÐʹÓÃÕâÖÖÊý¾ÝÀàÐÍ£¬ÒÔ¸æËßϵͳºË²»ÔÊÐí·¢ÉúºËÐźż¯ÖеÄÐźŠ 
¡£Èçͬǰ  
ÃæÒÑÌá¹ýµÄ£¬ÐźÅÖÖÀàÊý¿ÉÄܳ¬¹ýÒ»¸öÕûÐÍÁ¿Ëù°üº¬µÄ¶þ½øÎ»Êý£¬ËùÒÔÒ»°ã¶øÑÔ£¬  
²»ÄÜÓÃÒ»  
¸ö  
ÕûÐÍÁ¿ÖеÄÒ»¸ö¶þ½øÎ»´ú±íÒ»ÖÖÐźš£POSIXª±1¶¨ÒåÊý¾ÝÀàÐÍsigset-tÒÔ°üº¬Ò»¸ö  
Ðźż¯£¬  
Ò²¶¨ÒåÁËÏÂÁÐÎå¸ö´¦ÀíÐźż¯µÄº¯Êý¡£ª¥  
#include <signalª±h>ª¥  
int sigemptyset(sigset ¼£Ã£Ä££ª³£²¡½t *set);ª¥  
int sigfillset(sigset ¼£Ã£Ä££ª³£²¡½t *set);ª¥  
int sigaddset(sigset ¼£Ã£Ä££ª³£²¡½t *set,int signo);ª¥  
int sigdelset(sigset ¼£Ã£Ä££ª³£²¡½t *set,int signo);ª¥  
4¸öº¯Êý¶¼·µ»Ø£ºÈô³É¹¦Îª0£¬³ö´íΪ-1ª¥  
int sigismember(const sigset ¼£Ã£Ä££ª³£²¡½t *set,int signo);ª¥  
·µ»Ø£ºÈôÕæÎª1£¬Èô¼ÙΪ0ª¥  
º¯Êýsigemptyset³õʼ»¯ÓÉsetÖ¸ÏòµÄÐźż¯£¬Ê¹ÅųýÆäÖÐËùÓÐÐźš£º¯Êýsigfill  
set³õʼ»¯  
ÓÉsetÖ¸ÏòµÄÐźż¯£¬Ê¹°üÀ¨ÆäÖÐËùÓÐÐźš£ËùÓÐÓ¦ÓóÌÐòÔÚʹÓÃÐźż¯Ç°£¬Òª¶Ô  
¸ÃÐźż¯  
µ÷ÓÃsigemptyset»òsigfillsetÒ»´Î¡£ÕâÊÇÒòΪC±àÒë³ÌÐò½«²»¸³³õÖµµÄÍⲿºÍ¾²Ì¬  
¶ÈÁ¿¶¼³õ  
ʼ»¯Îª0£¬¶øÕâÊÇ·ñÓë¸ø¶¨ÏµÍ³ÉÏÐźż¯µÄʵÏÖÏà¶ÔÓ¦²¢²»Çå³þ¡£ª¥  
Ò»µ©ÎÒÃÇÒѾ­³õʼ»¯ÁËÒ»¸öÐźż¯£¬ÒÔºó¾Í¿ÉÔÚ¸ÃÐźż¯ÖÐÔö¡¢É¾Ìض¨µÄÐźš£º¯  
Êýsigadd  
set½«Ò»¸öÐźÅÌí¼Óµ½Ò»¸öÏִ漯ÖУ¬sigdelsetÔò´ÓÒ»¸öÐźż¯ÖÐɾ³ýÒ»¸öÐźš£  
¶ÔËùÓÐÒÔ  
Ðźż¯×÷Ϊһ¸ö²ÎÊýµÄº¯Êý£¬¶¼ÏòÆä´«ËÍÐźż¯µØÖ·¡£ª¥  
ʵÏÖª¥  
Èç¹ûϵͳËùʵÏÖµÄÐźÅÊýÉÙÓÚÒ»¸öÕûÐÍÁ¿Ëù°üº¬µÄÁ½½øÎ»Êý£¬Ôò¿ÉÓÃÒ»¸ö¶þ½øÖÆÎ»  
´ú±íÒ»¸ö  
Ðźŵķ½·¨ÊµÏÖÐźż¯¡£ÀýÈ磬´ó¶àÊý4ª±3+BSDʵÏÖÖÐÓÐ31ÖÖÐźţ¬ºÍ32λ×Ö³¤Õû  
ÐÍ¡£sige  
mptysetºÍsigfillsetÕâÁ½¸öº¯Êý¿ÉÒÔÔÚ<signalª±h>Í·ÎļþÖÐʵÏÖΪºê£ºª¥  
#define sigemptyset(ptr) (*(ptr)=0)ª¥  
#define sigfillset(ptr) (*(ptr)=¡«(sigset ¼£Ã£Ä££ª³£²¡½t)0,0)ª¥  
×¢Ò⣬³ýÁËÉèÖöÔÓ¦Ðźż¯Öи÷ÐźŵÄλÍ⣬sigfillset±ØÐë·µ»Ø0£¬ËùÒÔÎÒÃÇʹ  
ÓöººÅËã  
·û£¬Ëü½«¶ººÅËã·ûºóµÄÖµ×÷Ϊ±í´ïʽµÄÖµ·µ»Ø¡£ª¥  
ʹÓÃÕâÖÖʵÏÖµÄsigaddset´ò¿ªÒ»Î»£¬sigdelsetÔò¹Ø±Õһλ¡£sigismember²âÊÔÒ»  
Ö¸¶¨Î»¡£  
ÒòΪûÓÐÐźűàºÅֵΪ0£¬ËùÒÔ´ÓÐźűàºÅÖмõ1ÒԵõ½Òª´¦ÀíµÄ¶þ½øÖÆÎ»µÄλ±àºÅ  
Êý¡£³ÌÐò  
10ª±9ʵÏÖÕâЩ¹¦ÄÜ¡£ª¥  
³ÌÐò10ª±9 sigaddset¡¢sigdelsetºÍsigismemberµÄʵÏÖª¥  
ÎÒÃÇÒ²¿É½«ÕâÈý¸öº¯ÊýÔÚ<signalª±h>ÖÐʵÏÖΪ¸÷Ò»Ðеĺ꣬µ«ÊÇPOSIXª±1ÒªÇó¼ì  
²éÐźűࠠ
ºÅ²ÎÊýµÄÓÐЧÐÔ£¬Èç¹ûÎÞЧÔòÉèÖÃerrno¡£ÔÚºêÖÐʵÏÖÕâÒ»µã±Èº¯ÊýÒªÄÑ¡£ª¥  
10ª±12¡þsigprocmaskº¯Êýª¥  
ÔÚ10ª±8½ÚÖÐÔøËµÃ÷Ò»¸ö½ø³ÌµÄÐÅºÅÆÁ±Î×ֹ涨Á˵±Ç°×èÈû¶ø²»ÄÜ´«Ë͸ø¸Ã½ø³ÌµÄ  
Ðźż¯¡£  
µ÷Óú¯Êýsigprocmask¿ÉÒÔ¼ì²â»ò¸ü¸Ä(»òÁ½Õß)½ø³ÌµÄÐÅºÅÆÁ±Î×Ö¡£ª¥  
#include<signalª±h>ª¥  
int sigprocmask(int how,const sigset ¼£Ã£Ä££ª³£²¡½t *set,sigset ¼£Ã£Ä££  
ª³£²¡½t *  
oset);ª¥  
·µ»Ø£ºÈô³É¹¦Îª0£¬³ö´íΪ-1 Returns:0 if OK,-1 on errorª¥  
Ê×ÏÈ£¬osetÊǷǶ¨Ö¸Õ룬½ø³ÌµÄµ±Ç°ÐÅºÅÆÁ±Î×Öͨ¹ýoset·µ»Ø¡£Æä´Î£¬ÈôsetÊÇÒ»  
¸ö·Ç¶¨Ö¸  
Õ룬Ôò²ÎÊýhowָʾÈçºÎÐ޸ĵ±Ç°ÐÅºÅÆÁ±Î×Ö¡£Í¼10ª±4˵Ã÷ÁËhow¿ÉÑ¡ÓõÄÖµ¡£SI  
G-BLOCKÊÇ  
»ò²Ù×÷£¬¶øSIG-SETMASKÔòÊǸ³Öµ²Ù×÷¡£ª¥  
¡¼£È£Ô£µ"£Ó£Ó¡½Í¼10ª±4 ÓÃsigprocmask¸ü¸Äµ±Ç°ÐÅºÅÆÁ±Î×ֵķ½·¨ª¥¡¼£È£Ô£µ¡½  
   
Èç¹ûsetÊǸö¶¨Ö¸Õ룬Ôò²»¸Ä±ä¸Ã½ø³ÌµÄÐÅºÅÆÁ±Î×Ö£¬howµÄÖµÒ²ÎÞÒâÒå¡£ª¥  
Èç¹ûÔÚµ÷ÓÃsigprocmaskºóÓÐÈκÎδ¾öµÄ£¬²»ÔÙ×èÈûµÄÐźţ¬ÔòÔÚsigprocmask·µ»Ø  
µÄÖÁÉÙ½«  
ÆäÖÐÖ®Ò»´«Ë͸ø¸Ã½ø³Ì¡£ª¥  
ʵÀýª¥  
³ÌÐò10ª±10ÊÇÒ»¸öº¯Êý£¬Ëü´òÓ¡µ÷Óýø³ÌµÄÐÅºÅÆÁ±Î×ÖËù×èÈûµÄÐźŵÄÃû³Æ¡£´Ó³Ì  
Ðò10ª±14  
ºÍ10ª±15Öе÷Óô˺¯Êý¡£ÎªÁ˽ÚÊ¡¿Õ¼ä£¬Ã»ÓжÔͼ10ª±1ÖÐÁгöµÄÿһÖÖÐźŲâÊÔ  
¸ÃÆÁ±Î×Ö  
¡£(¼ûÁ·Ï°10ª±9)ª¥  
³ÌÐò10ª±10 Îª½ø³Ì´òÓ¡ÐźŠÁ±Îª¥  
10ª±13¡þsigpendingº¯Êýª¥  
sigpending·µ»Ø¶ÔÓÚµ÷Óýø³Ì±»×èÈû²»ÄÜ´«Ëͺ͵±Ç°Î´¾öµÄÐźż¯¡£¸ÃÐźż¯Í¨¹ý  
set²ÎÊý  
·µ»Ø¡£ª¥  
#include<signalª±h>ª¥  
int sigpending(sigset ¼£Ã£Ä££ª³£²¡½t *set);ª¥  
·µ»Ø£ºÈô³É¹¦Îª0£¬³ö´íΪ-1ª¥  
ʵÀýª¥  
³ÌÐò10ª±11ʹÓÃÁ˺ܶàÇ°ÃæËµÃ÷¹ýµÄÐźŹ¦ÄÜ¡£½ø³Ì×èÈûÁËSIGQUITÐźţ¬±£´æÁË  
µ±Ç°ÐÅ  
ºÅÆÁ±Î×Ö(ÒÔ±ãÒÔºó»Ö¸´)£¬È»ºó˯Ãß5ÃëÖÓ¡£ÔÚ´ËÆÚ¼äËù²úÉúµÄÍ˳öÐźŶ¼±»×èÈû  
£¬²»´«ËÍ  
ÖÁ¸Ã½ø³Ì£¬Ö±µ½¸ÃÐźŲ»ÔÙ±»×èÈû¡£ÔÚ5Ãë˯Ãß½áÊøºó£¬¼ì²éÊÇ·ñÓÐÐźÅδ¾ö£¬È»  
ºó½«SIGQU  
ITÉèÖÃΪ²»ÔÙ×èÈû¡£ª¥  
×¢Ò⣬ÔÚÉèÖÃSIGQUITΪ×èÈûʱ£¬ÎÒÃDZ£´æÁËÀÏµÄÆÁ±Î×Ö¡£ÎªÁ˽â³ý¶Ô¸ÃÐźŵÄ×è  
Èû£¬ÎÒÃÇ  
ÓÃÀÏµÄÆÁ±Î×ÖÖØÐÂÉèÖÃÁ˽ø³ÌÐÅºÅÆÁ±Î×Ö(SIG-SETMAS)¡£¿ÉÒÔʹÓõÄÁíÒ»ÖÖ·½·¨ÊÇ  
ÓÃSIG-U  
NBLOCKʹÒÔǰ×èÈûµÄÐźŲ»ÔÙ×èÈû¡£µ«ÊÇ£¬Ó¦µ±Á˽âÈç¹ûÎÒÃDZàдÁËÒ»¸ö¿ÉÄÜÓÉÆä  
ËûÈËʹÓà 
µÄº¯Êý£¬¶øÇÒÎÒÃÇÐèÒªÔÚÎÒÃǵĺ¯ÊýÖÐ×èÈûÒ»¸öÐźţ¬Ôò²»ÄÜÓÃSIG-UNBLOCK½â³ý  
¶Ô´ËÐźŠ 
µÄ×èÈû£¬ÕâÊÇÒòΪ´Ëº¯ÊýµÄµ÷ÓÃÕßÔÚµ÷Óñ¾º¯Êý֮ǰ¿ÉÄÜÒ²×èÈûÁË´ËÐźš£ÔÚÕâÖÖ  
Çé¿öÏÂÎÒ  
ÃDZØÐëʹÓÃSIG-SETMASK½«ÐÅºÅÆÁ±Î×Ö»Ö¸´ÎªÔ­ÏÈÖµ¡£ÔÚ10ª±18½ÚµÄsystemº¯Êý²¿  
·ÖÓÐÕâ  
ÑùµÄÒ»¸öÀý×Ó¡£ª¥  
ÔÚ˯ÃßÆÚ¼äÈç¹û²úÉúÁËÍ˳öÐźţ¬ÄÇô³ÌÐòÔËÐе½ÕâÒ»µãÔò¸ÃÐźÅÊÇδ¾öµÄ£¬µ«ÊÇ  
²»ÔÙÊÜ×è  
Èû£¬ËùÒÔÔÚsigprocmask·µ»ØÖ®Ç°£¬Ëü¾Í±»´«Ë͵½±¾½ø³Ì¡£´Ó³ÌÐòµÄÊä³öÖÐÎÒÃǿɠ 
ÒÔ¿´µ½Õâ  
Ò»µã£ºÔÚSIGQUIT´¦Àí³ÌÐò(sig-quit)ÖеÄprintfÓï¾äÏÈÖ´ÐУ¬È»ºóÔÙÖ´ÐÐsigpro  
cmaskÖ®ºó  
µÄprintfÓï¾ä¡£ª¥  
¡¼£È£Ô£µ"¡½³ÌÐò10ª±11 ÐźÅÉèÖúÍsigprocmaskµÄʵÀýª¥¡¼£È£Ô£µ¡½  
È»ºó¸Ã½ø³ÌÔÙ˯Ãß5ÃëÖÓ¡£Èç¹ûÔÚ´ËÆÚ¼äÔÙ²úÉúÍ˳öÐźţ¬ÄÇôËü¾Í»áʹ¸Ã½ø³ÌÖÕ  
Ö¹£¬ÒòΪ  
ÔÚÉϴβ¶×½µ½¸ÃÐźÅʱ£¬Òѽ«Æä´¦Àí·½Ê½ÉèÖÃΪĬÈ϶¯×÷¡£´ËʱÈç¹û¼üÈëÖÕ¶ËÍ˳ö  
×Ö·ûCont  
rol-£Ü£¬ÔòÊä³ö"QUIT(coredump)"ÐÅÏ¢£¬±íʾ½ø³ÌÒò½Óµ½SIGQUIT¶øÖÕÖ¹£¬µ«ÊÇÔÚ  
coreÎÄ  
¼þÖб£´æÁËÓë½ø³ÌÓйصÄÐÅÏ¢(¸ÃÐÅÏ¢ÊÇÓÉshell·¢ÏÖÆä×Ó½ø³ÌÒì³£ÖÕֹʱ´òÓ¡µÄ¡£  
)ª¥  
$ aª±outª¥  
^£Ü ²úÉúÐźÅÒ»´Î(ÔÚ5ÃëÖ®ÄÚ)ª¥  
SIGQUIT pending ´Ósleep·µ»Øºóª¥  
caught SIGQUIT ÔÚÐźŴ¦Àí³ÌÐòÖЪ¥  
SIGQUIT unblocked ´Ósigprocmask·µ»Øºóª¥  
^£ÜQuit(coredump) ÔٴβúÉúÐźŪ¥  
$ aª±outª¥  
^£Ü^£Ü^£Ü^£Ü^£Ü^£Ü^£Ü^£Ü^£Ü^£Ü ²úÉúÐźÅ10´Î(ÔÚ5ÃëÖ®ÄÚ)ª¥  
SIGQUIT pendingª¥  
caught SIGQUIT Ö»²úÉúÐźÅÒ»´Îª¥  
SIGQUIT unblockedª¥  
^£ÜQuit(coredump) ÔÙ²úÉúÐźŪ¥  
×¢Ò⣬ÔÚµÚ¶þ´ÎÔËÐиóÌÐòʱ£¬ÔÚ½ø³Ì˯ÃßÆÚ¼äÎÒÃÇʹSIGQUITÐźŲúÉúÁË10´Î£¬  
µ«Êǽâ³ý  
Á˶ԸÃÐźŵÄ×èÈûºó£¬Ö»Ïò½ø³Ì´«ËÍÒ»´ÎSIGQUIT¡£´ÓÖпÉÒÔ¿´³öÔÚ´ËϵͳÉÏûÓР 
½«ÐźŽø  
ÐÐÅŶӡ£ª¥  
10ª±14¡þsigactionº¯Êýª¥  
sigactionº¯ÊýµÄ¹¦ÄÜÊǼì²é»òÐÞ¸Ä(»òÁ½Õß)ÓëÖ¸¶¨ÐźÅÏà¹ØÁªµÄ´¦Àí¶¯×÷¡£´Ëº¯  
ÊýÈ¡´úÁËU  
nixÔçÆÚ°æ±¾Ê¹ÓõÄsignalº¯Êý¡£ÔÚ±¾ÊÐĩβÎÒÃÇÓÃsigactionº¯ÊýʵÏÖÁËsignal¡£  
ª¥  
#include<signalª±h>ª¥  
int sigaction(int signo,const struct sigaction *act,ª¥  
struct sigaction *oact);ª¥  
·µ»Ø£ºÈô³É¹¦Îª0£¬³ö´íΪ-1ª¥  
ÆäÖУ¬²ÎÊýsignoÊÇÒª¼ì²â»òÐ޸ľßÌ嶯×÷µÄÐźŵıàºÅÊý¡£ÈôactÖ¸Õë·Ç¶¨£¬ÔòÒª  
ÐÞ¸ÄÆä¶¯  
×÷¡£Èç¹ûoactÖ¸Õë·Ç¶¨£¬Ôòϵͳ·µ»Ø¸ÃÐźŵÄÔ­Ïȶ¯×÷¡£´Ëº¯ÊýʹÓÃÏÂÁнṹ£ºª¥  
   
struct sigaction {ª¥  
void (*sa ¼£Ã£Ä££ª³£²¡½handler) (); £¯* ÐźŴ¦Àí³ÌÐòµÄµØÖ·£¬»òSIG-IGN£¬  
»òSIG-DFL  
£¬ª¤  
sigset ¼£Ã£Ä££ª³£²¡½t sa ¼£Ã£Ä££ª³£²¡½mask; £¯*Ìí¼ÓµÄÒª×èÈûµÄÐźŪ¤  
int sa ¼£Ã£Ä££ª³£²¡½flags; £¯*ÐźÅÑ¡Ï¼ûͼ10ª±5ª¤  
};ª¥  
µ±¸ü¸ÄÐźŶ¯×÷ʱ£¬Èç¹ûsa-handlerÖ¸ÏòÒ»¸öÐźŲ¶×½º¯Êý(²»Êdz£ÊýSIG-IGN»òS  
IG-DFL)  
£¬Ôòsa-mask×Ö¶Î˵Ã÷ÁËÒ»¸öÐźż¯£¬ÔÚµ÷ÓÃÐźŲ¶×½º¯Êý֮ǰ£¬¸ÃÐźż¯Òª¼Óµ½  
½ø³ÌµÄÐÅ  
ºÅÆÁ±Î×ÖÖС£½öµ±´ÓÐźŲ¶×½º¯Êý·µ»ØÊ±ÔÙ½«½ø³ÌµÄÐÅºÅÆÁ±Î×Ö»Ö¸´ÎªÔ­ÏÈÖµ¡£Õâ  
Ñù£¬ÔÚµ÷  
ÓÃÖ´ÐÐÐźŴ¦Àí³ÌÐòʱ¾ÍÄÜ×èÈûijЩÐźš£ÔÚÐźŴ¦Àí³ÌÐò±»µ÷ÓÃʱ£¬ÏµÍ³½¨Á¢µÄ  
ÐÂÐÅºÅÆÁ  
±Î×Ö»á×Ô¶¯°üÀ¨Õý±»´«Ë͵ÄÐźš£Òò´Ë¾Í±£Ö¤ÁËÔÚ´¦ÀíÒ»¸ö¸ø¶¨µÄÐźÅʱ£¬Èç¹ûÕâ  
ÖÖÐźÅÔÙ  
´Î·¢Éú£¬ÄÇôËü»á±»×èÈûµ½¶Ôǰһ¸öÐźŵĴ¦Àí½áÊøÎªÖ¹¡£»ØÒä10ª±8½Ú£¬Èôͬһ  
ÖÖÐźŶࠠ
´Î·¢Éú£¬Í¨³£²¢²»½«ËüÃÇÅŶӣ¬ËùÒÔÈç¹ûÔÚijÖÖÐźű»×èÈûʱ£¬Ëü·¢ÉúÁËÎå´Î£¬ÄÇ  
ô¶ÔÕâÖÖ  
ÐźŽâ³ý×èÈûºó£¬ÆäÐźŴ¦Àíº¯Êýͨ³£Ö»»á±»µ÷ÓÃÒ»´Î¡£ª¥  
Ò»µ©¶ÔÒ»¸ö¸ø¶¨µÄÐźÅÉèÖÃÁËÒ»¸ö¶¯×÷£¬ÄÇôÔÚÓÃsigaction¸Ä±äËü֮ǰ£¬¸ÃÉèÖà 
¾ÍÒ»Ö±ÓР 
Ч¡£ÕâÓëÔçÆÚµÄ²»¿É¿¿ÐźŻúÖÆ²»Í¬£¬¶ø·ûºÏÁËPOSIXª±1ÔÚÕâ·½ÃæµÄÒªÇ󡣪¥  
act½á¹¹µÄsa-flags×ֶΰüº¬Á˶ÔÐźŽøÐд¦ÀíµÄ¸÷¸öÑ¡ÔñÏͼ10ª±5ÏêϸÁгöÁË  
ÕâЩѡÔñ  
ÏîµÄÒâÒå¡£ª¥  
ͼ10ª±5 ÐźŴ¦ÀíµÄÑ¡ÔñÏî±êÖ¾(sa-flags)ª¥  
ʵÀý¡¼CD2¡½signalº¯Êýª¥  
ÏÖÔÚÈÃÎÒÃÇÓÃsigactionʵÏÖsignalº¯Êý¡£4ª±3+BSDÒ²ÊÇÕâÑù×öµÄ(POSIXª±1µÄÔ­Àí  
²ûÊöÖз֠ 
Ҳ˵Ã÷ÕâÀïPOSIXËùÏ£ÍûµÄ)¡£SVR4ÔòÌṩÀϵIJ»¿É¿¿ÐźÅÓïÒåµÄsignalº¯Êý¡£³ý·Ç  
ΪÁËÏòºó  
¼æÈÝÃæÊ¹ÓÃÀϵÄÓïÒ壬ÔÚSVR4֮ϣ¬ÄãҲӦʹÓÃÏÂÃæµÄsignalʵÏÖ£¬»òÕßÖ±½Óµ÷Óà 
sigactio  
n(ÔÚSVR4Ï£¬¿ÉÒÔÔÚµ÷ÓÃsigactionʱָ¶¨SA-RESETHANDºÍSA-NODEFERÑ¡ÏîÒÔʵÏÖ  
ÀϵÄÓïÒå  
µÄsignalº¯Êý)¡£ª¥  
ÔÚ±¾ÊéÖÐËùÓе÷ÓÃsignalµÄʵÀý¶¼Êǵ÷ÓóÌÐò10ª±12ÖÐËùʵÏֵĸú¯Êý¡£ª¥  
¡¼£È£Ô£µ"¡½³ÌÐò10ª±12 ÓÃsigactionËùʵÏÖµÄsignalº¯Êýª¥¡¼£È£Ô£µ¡½  
×¢Ò⣬ÎÒÃDZØÐëÓÃsigemptysetº¯Êý³õʼ»¯act½á¹¹µÄ³ÉÔ±¡£²»Äܱ£Ö¤ª¥  
actª±sa-mask=0;ª¥  
»á×öͬÑùµÄÊÂÇé¡£ª¥  
ÎÒÃǶԳýSIGALRMÒÔÍâµÄËùÓÐÐźŶ¼ÆóͼÉèÖÃSA-RESTART±êÖ¾£¬ÓÚÊDZ»ÕâЩÐźÅÖР 
¶ÏµÄϵͳ  
µ÷Óö¼ÄÜÔÙÆð¶¯¡£²»Ï£ÍûÔÙÆð¶¯ÓÉSIGALRMÐźÅÖжϵÄϵͳµ÷ÓõÄÔ­ÒòÊÇ£ºÎÒÃÇÏ£  
Íû¶Ô£É£¯  
£Ï²Ù×÷¿ÉÒÔÉèÖÃʱ¼äÏÞÖÆ¡£(Çë»ØÒäÓë³ÌÐò10ª±7ÓйصÄÌÖÂÛ¡£)ª¥  
ijЩϵͳ¶¨ÒåÁËSA-INTERRUPT±êÖ¾¡£ÕâЩϵͳµÄĬÈÏ·½Ê½ÊÇÖØÐÂÆð¶¯±»ÖжϵÄϵͳ  
µ÷Ó㬠 
¶øÖ¸¶¨´Ë±êÖ¾Ôòʹϵͳµ÷Óñ»ÖжϺó²»ÔÙÖØÆð¶¯¡£ª¥  
ʵÀý¡¼CD2¡½signal ¼£Ã£Ä££ª³£²¡½intrº¯Êýª¥  
³ÌÐò10ª±13ÊÇsignalº¯ÊýµÄÁíÒ»ÖÖ°æ±¾£¬Ëü×èÖ¹±»ÖжϵÄϵͳµ÷ÓõÄÔÙÆð¶¯¡£ª¥  
³ÌÐò10ª±13 signal-intrº¯Êýª¥  
Èç¹ûϵͳ¶¨ÒåÁËSA-INTERRUPT£¬ÔòÔÚsa-flagsÖÐÔö¼Ó¸Ã±êÖ¾£¬ÕâÑùÒ²¾Í×èÖ¹Á˱»ÖР 
¶ÏµÄϵͳ  
µ÷ÓõÄÔÙÆð¶¯¡£ª¥  
10ª±15¡þsigsetjmpºÍsiglongjmpº¯Êýª¥  
ÔÚ7ª±10½ÚÖÐ˵Ã÷ÁËÓÃÓڷǾֲ¿×ªÒƵÄsetjmpºÍlongjmpº¯Êý¡£ÔÚÐźŴ¦Àí³ÌÐòÖо­  
³£µ÷ÓÃlo  
ngjmpº¯ÊýÒÔ·µ»Øµ½³ÌÐòµÄÖ÷Ñ­»·ÖУ¬¶ø²»ÊǴӸô¦Àí³ÌÐò·µ»Ø¡£È·Êµ£¬ANSIC±ê×¼  
˵Ã÷Ò»¸ö  
ÐźŴ¦Àí³ÌÐò¿ÉÒÔ»òÕß·µ»Ø£¬»òÕßµ÷ÓÃabort,exit»òlongjmp¡£ÔÚ³ÌÐò10ª±5ºÍ10ª±  
8ÖÐÒѾ­  
ÓÐÁËÕâÖÖÇé¿ö¡£ª¥  
µ÷ÓÃlongjmpÓÐÒ»¸öÎÊÌâ¡£µ±²¶×½µ½Ò»¸öÐźÅʱ£¬½øÈëÐźŲ¶×½º¯Êý£¬´Ëʱµ±Ç°ÐÅ  
ºÅ±»×Ô¶¯  
µØ¼Óµ½½ø³ÌµÄÐÅºÅÆÁ±Î×ÖÖС£Õâ×èÖ¹Á˺óÀ´²úÉúµÄÕâÖÖÐźÅÖжϴËÐźŴ¦Àí³ÌÐò¡£  
Èç¹ûÓÃlo  
ngjmpÌø³ö´ËÐźŴ¦Àí³ÌÐò£¬Ôò¶Ô´Ë½ø³ÌµÄÐÅºÅÆÁ±Î×ֻᷢÉúÊ²Ã´ÄØ?ª¥  
ÔÚ4ª±3+BSDÏ£¬setjmpºÍlongjmp±£´æºÍ»Ö¸´ÐÅºÅÆÁ±Î×Ö¡£µ«ÊÇ£¬SVR4²¢²»×öÕâÖÖ  
²Ù×÷¡£4ª±  
3+BSDÌṩº¯Êý-setjmpºÍ-longjmp£¬ËüÃÇÒ²²»±£´æºÍ»Ö¸´ÐÅºÅÆÁ±Î×Ö¡£ª¥  
ΪÁËÔÊÐíÁ½ÖÖÐÎʽ²¢´æ£¬POSIXª±1²¢Ã»ÓÐ˵Ã÷setjmpºÍlongjmp¶ÔÐÅºÅÆÁ±Î×ÖµÄ×÷  
Óá£×÷Ϊ  
Ìæ´ú£¬POSIXª±1¶¨ÒåÁËÁ½¸öк¯ÊýsigsetjmpºÍsiglongjmp¡£ÔÚÐźŴ¦Àí³ÌÐòÖÐ×÷  
·Ç¾Ö²¿×ª  
ÒÆÊ±Ó¦µ±Ê¹ÓÃÕâÁ½¸öº¯Êý¡£ª¥  
#include <setjmpª±h>ª¥  
int sigsetjmp(sigjmp ¼£Ã£Ä££ª³£²¡½buf env,int savemask);ª¥  
void siglongjmp bufª«envª« int ª«valª«£»ª¥  
·µ»Ø£ºÈôÖ±½Óµ÷ÓÃΪ0£¬Èô´Ósiglongjmpµ÷Ó÷µ»ØÔòΪ·Ç0¡£ª¥  
ÕâÁ½¸öº¯ÊýºÍsetjmp£¬longjmpÖ®¼äµÄÎ¨Ò»Çø±ðÊÇsigsetjmpÔö¼ÓÁËÒ»¸ö²ÎÊý¡£Èç¹û  
savemask  
·Ç0£¬ÔòsigsetjmpÔÚenvÖб£´æ½ø³ÌµÄµ±Ç°ÐÅºÅÆÁ±Î×Ö¡£ª¥  
ÔÚµ÷ÓÃsiylongjmpʱ£¬Èç¹û´ø·Ç0 savemaskµÄsigsetjmpµ÷ÓÃÒѾ­±£´æÁËenv,Ôòsi  
glongjmp  
´ÓÆäÖлָ´±£´æµÄÐÅºÅÆÁ±Î×Ö¡£ª¥  
ʵÀýª¥  
³ÌÐò10ª±14ÏÔʾÁËÔÚÐźŴ¦Àí³ÌÐò±»µ÷ÓÃʱ£¬ÏµÍ³ËùÉèÖõÄÐÅºÅÆÁ±Î×ÖÈçºÎ×Ô¶¯µØ  
°üÀ¨¸Õ±»  
²¶×½µ½µÄÐźš£ËüÒ²ÀýʾÁËÈçºÎʹÓÃsigsetjmpºÍsiglongjmpº¯Êý¡£ª¥  
³ÌÐò10ª±14 ÐÅºÅÆÁ±Î¡¢sigsetjmpºÍsiglongjmpµÄʵÀýª¥  
´Ë³ÌÐòÀýʾÁËÁíÒ»ÖÖ¼¼Êõ£¬Ö»ÒªÔÚÐźŴ¦Àí³ÌÐòÖе÷ÓÃsiglongjmp¾ÍӦʹÓÃÕâÖÖ¼¼  
Êõ¡£ÔÚµ÷  
ÓÃsigsetjmpÖ®ºó½«±äÁ¿canjumpÉèÖÃΪ·Ç0¡£ÔÚÐźŴ¦Àí³ÌÐòÖмì²â´Ë±äÁ¿£¬½öµ±  
ËüΪ·Ç0Öµ  
ʱ²Åµ÷ÓÃsiglongjmp¡£ÕâÌṩÁËÒ»ÖÖ±£»¤»úÖÆ£¬Ê¹µÃÈôÔÚjmpbuf(Ìø×ª»º´æ)ÉÐδÓÉ  
sigsetjm  
p³õʼ»¯Ê±£¬µ÷ÓÃÐźŴ¦Àí³ÌÐò£¬Ôò²»Ö´ÐÐÆä´¦Àí¶¯×÷¾Í·µ»Ø¡£(ÔÚ±¾³ÌÐòÖУ¬sig  
longjmpÖ®  
ºó³ÌÐòºÜ¿ì¾Í½áÊø£¬µ«ÊÇÔڽϴóµÄ³ÌÐòÖУ¬ÔÚsiglongjmpÖ®ºó£¬ÐźŴ¦Àí³ÌÐò¿ÉÄÜ  
ÈԾɱ»Éè  
ÖÃ)¡£ÔÚÒ»°ãµÄC´úÂëÖÐ(²»ÊÇÐźŴ¦Àí³ÌÐò)£¬¶ÔÓÚlongjmp²¢²»ÐèÒªÕâÖÖ±£»¤´ëÊ©  
¡£µ«ÊÇ£¬  
ÒòΪÐźſÉÄÜÔÚÈκÎʱºò·¢Éú£¬ËùÒÔÔÚÐźŴ¦Àí³ÌÐòÖУ¬ÐèÒªÕâÖÖ±£»ñ´ëÊ©¡£ª¥  
ÔÚ³ÌÐòÖÐʹÓÃÁËÊý¾ÝÀàÐÍsig-atomic-c£¬ËüÊÇANSI C¶¨ÒåµÄÔÚдʱ²»»á±»Öжϵı䠠
Á¿ÀàÐÍ¡£  
ËüÒâζ×ÅÕâÖÖ±äÁ¿ÔÚ¾ßÓÐÐé´æµÄϵͳÉϲ»»á¿çÔ½Ò³µÄ±ß½ç£¬¿ÉÒÔÓÃÒ»Ìõ»úÆ÷Ö¸Áî¶Ô  
Æä½øÐд栠
È¡¡£¶ÔÓÚÕâÖÖÀàÐ͵ıäÁ¿×ÜÊÇ´øANSI CµÄÀàÐÍÐÞÊηûvlatile£¬ÆäÔ­ÒòÊÇ£º¸Ã±äÁ¿  
½«Óɶþ¸ö  
²»Í¬µÄ¿ØÖÆÏß-mainº¯ÊýºÍÒì²½Ö´ÐеÄÐźŴ¦Àí³ÌÐò´æÈ¡¡£ª¥  
ͼ10ª±6ÏÔʾÁ˴˳ÌÐòµÄÖ´ÐÐʱ¼ä˳Ðò¡£¿É½«Í¼10ª±6·Ö³ÉÈý²¿·Ö£º×óÃæ²¿·Ö(¶ÔÓ¦  
ÓÚmain)£¬  
Öм䲿·Ö(sig-usr1)ºÍÓÒÃæ²¿·Ö(sig-alrm)¡£ÔÚ½ø³ÌÖ´ÐÐ×óÃæ²¿·Öʱ£¬ÐÅºÅÆÁ±Î×Ö  
ÊÇ0(ûÓР 
ÐźÅÊÇ×èÈûµÄ)¡£¶øÖ´ÐÐÖм䲿·Öʱ£¬ÆäÐÅºÅÆÁ±Î×ÖÊÇSIGUSR1¡£Ö´ÐÐÓÒÃæ²¿·Öʱ£¬  
ÐÅºÅÆÁ±Î  
×ÖÊÇSIGUSR1£üSIGALRM¡£ª¥  
¡¼£È£Ô£µ"¡½Í¼10ª±6 ´¦ÀíÁ½¸öÐźŵÄʵÀý³ÌÐòµÄʱ¼ä˳Ðòª¥¡¼£È£Ô£µ¡½  
Ö´ÐгÌÐò10ª±14µÃµ½ÏÂÃæµÄÊä³ö£ºª¥  
$ aª±out & ÔÚºǫ́Æô¶¯½ø³Ìª¥  
starting main:ª¥  
£Û1£Ý 531 ×÷Òµ¿ØÖÆshell´òÓ¡Æä½ø³ÌIDª¥  
$ kill -USR1 531 Ïò¸Ã½ø³Ì·¢ËÍSIGUSR1ª¥  
starting sig ¼£Ã£Ä££ª³£²¡½usr1:SIGUSR1ª¥  
$ in sig ¼£Ã£Ä££ª³£²¡½alrm:SIGUSR1 SIGALRMª¥  
finishing sig ¼£Ã£Ä££ª³£²¡½usr1:SIGUSR1ª¥  
ending main:ª¥  
£Û1£Ý+Done aª±out & ¼üÈë»Ø³µª¥  
ÕâÓëÎÒÃÇËùÆÚÍûµÄÏàͬ£ºµ±µ÷ÓÃÒ»¸öÐźŴ¦Àí³ÌÐòʱ£¬±»²¶×½µ½µÄÐźżӵ½Á˽ø³Ì  
µÄµ±Ç°ÐÅ  
ºÅÆÁ±Î×Ö¡£µ±´ÓÐźŴ¦Àí³ÌÐò·µ»ØÊ±£¬Ô­À´µÄÆÁ±Î×Ö±»»Ö¸´¡£ÁíÍ⣬siglongjmp»Ö  
¸´ÁËÓÉsi  
gsetjmpËù±£´æµÄÐÅºÅÆÁ±Î×Ö¡£ª¥  
Èç¹û½«³ÌÐò10ª±14ÖеÄsigsetjmpºÍsiglongjmp·Ö±ð´ú»»³É-setjmpºÍ-longjmp£¬Ôò  
ÔÚ4ª±3+B  
SDÏÂÔËÐд˳ÌÐò£¬×îºóÒ»ÐÐÊä³ö±ä³É£ºª¥  
ending main:SIGUSR1ª¥  
Õâ¼Éζ×ÅÔÚµ÷ÓÃ-setjmpÖ®ºóÖ´ÐÐmainº¯Êýʱ£¬ÆäSIGUSR1ÊÇ×èÈûµÄ¡£Õâ¶à°ë²»ÊÇÎÒ  
ÃÇËùÏ£  
ÍûµÄ¡£ª¥  
10ª±16¡þsigsuspendº¯Êýª¥  
ÉÏÃæÒѾ­ËµÃ÷£¬¸ü¸Ä½ø³ÌµÄÐÅºÅÆÁ±Î×Ö¿ÉÒÔ×èÈû»ò½â³ý×èÈûËùÑ¡ÔñµÄÐźš£Ê¹ÓÃÕâ  
ÖÖ¼¼Êõ¿É  
ÒÔ±£»ñ²»Ï£ÍûÓÉÐźÅÖжϵĴúÂëÁÙ½çÇø¡£Èç¹ûÏ£Íû¶ÔÒ»¸öÐźŽâ³ý×èÈû£¬È»ºópau  
serÒԵȴýÒÔǰ±»×èÈûµÄÐźŷ¢Éú£¬Ôò½«ÓÖÈçºÎÄØ?¼Ù¶¨ÐźÅÊÇSIGINT£¬ÊµÏÖÕâÒ»µã  
µÄ²»ÕýÈ··½·¨ÊÇ£º  
ª¥  
sigset ¼£Ã£Ä££ª³£²¡½t newmask,oldmask;ª¥  
sigemptyset(&newmask);ª¥  
sigaddset(&newmask,SIGINT);ª¥  
£¯* ×èÈûSIGINT£¬±£´æµ±Ç°ÐÅºÅÆÁ±Î *£¯ª¥  
if(sigprocmask(SIG ¼£Ã£Ä££ª³£²¡½BLOCK,&newmask,&oldmask)<0)ª¥  
err ¼£Ã£Ä££ª³£²¡½sys("SIG ¼£Ã£Ä££ª³£²¡½BLOCK error");ª¥  
£¯* ´úÂëÁÙ½çÇø *£¯ª¥  
£¯* »Ö¸´ÐÅºÅÆÁ±Î£¬Ëü²»×èÈûSIGINTª¥  
if(sigprocmask(SIG ¼£Ã£Ä££ª³£²¡½SETMASK,&oldmask,NULL)<0)ª¥  
err ¼£Ã£Ä££ª³£²¡½sys("SIG ¼£Ã£Ä££ª³£²¡½SETMASK error");ª¥  
pause();£¯* µÈ´ýÐźŷ¢Éú *£¯ª¥  
£¯* ¼ÌÐø´¦Àí *£¯ª¥  
Èç¹ûÔÚ½â³ý¶ÔSIGINTµÄ×èÈûºÍpauseÖ®¼ä·¢ÉúÁËSIGINTÐźţ¬Ôò´ËÐźžͱ»¶ªÊ§¡£  
ÕâÊÇÔçÆÚµÄ²»¿É¿¿ÐźŻúÖÆµÄÁíÒ»¸öÎÊÌâ¡£ª¥  
ΪÁ˾ÀÕý´ËÎÊÌ⣬ÐèÒªÔÚÒ»¸öÔ­×Ó²Ù×÷ÖÐʵÏÖ»Ö¸´ÐÅºÅÆÁ×Ö£¬È»ºóʹ½ø³Ì˯ÃßÕâÖÖ  
¹¦ÄÜÊÇÓÉsigsuspendº¯ÊýËùÌṩµÄ¡£  
#include<signalª±h>ª¥  
int sigsuspend(const sigset ¼£Ã£Ä££ª³£²¡½t *sigmask);ª¥  
·µ»Ø£º-1 errnoÉèÖÃΪEINTRª¥  
½ø³ÌµÄÐÅºÅÆÁ±Î×ÖÉèÖÃΪÓÉsigmaskÖ¸ÏòµÄÖµ¡£ÔÚ²¶×½µ½Ò»¸öÐźŻò·¢ÉúÁËÒ»¸ö»á  
ÖÕÖ¹¸Ã½ø  
³ÌµÄÐźÅ֮ǰ£¬¸Ã½ø³ÌÒ²±»¹ÒÆð¡£Èç¹û²¶×½µ½Ò»¸öÐźŶøÇÒ´Ó¸ÃÐźŴ¦Àí³ÌÐò·µ»Ø  
£¬Ôòsigs  
uspend·µ»Ø£¬²¢ÇҸýø³ÌµÄÐÅºÅÆÁ±Î×ÖÉèÖÃΪµ÷ÓÃsigsuspend֮ǰµÄÖµ¡£ª¥  
×¢Ò⣬´Ëº¯ÊýûÓгɹ¦·µ»ØÖµ¡£Èç¹ûËü·µ»Øµ½µ÷ÓÃÕߣ¬Ôò×ÜÊÇ·µ»Ø-1£¬²¢ÇÒerrno  
ÉèÖÃΪEIN  
TR(±íʾһ¸ö±»ÖжϵÄϵͳµ÷ÓÃ)¡£ª¥  
ʵÀýª¥  
³ÌÐò10ª±15ÏÔʾÁ˱£»¤ÁÙ½çÇø£¬Ê¹Æä²»±»Ö¸¶¨µÄÐźÅÖжϵÄÕýÈ··½·¨¡£ª¥  
³ÌÐò10ª±15 ±£»¤ÁÙ½çÇø²»±»ÐźÅÖжϪ¥  
×¢Ò⣬µ±sigsuspend·µ»ØÊ±£¬Ëü½«ÐÅºÅÆÁ±Î×ÖÉèÖÃΪµ÷ÓÃËü֮ǰµÄÖµ¡£ÔÚ±¾ÀýÖУ¬  
SIGINTÐÅ  
ºÅ½«±»×èÈû¡£Òò´Ë½«ÐÅºÅÆÁ±Î¸´ÖÃΪÔçÏȱ£´æµÄÖµ(oldmask)¡£ª¥  
ÔËÐгÌÐò10ª±15µÃµ½ÏÂÃæµÄÊä³ö£ºª¥  
$ aª±outª¥  
in critical region:SIGINTª¥  
^? ¼üÈëÎÒÃǵÄÖжÏ×Ö·ûª¥  
in sig ¼£Ã£Ä££ª³£²¡½int:SIGINTª¥  
after return from sigsuspend:SIGINTª¥  
´ÓÖпɼû£¬ÔÚsigsuspend·µ»ØÊ±£¬Ëü½«ÐÅºÅÆÁ±Î×Ö»Ö¸´Îªµ÷ÓÃËü֮ǰµÄÖµ¡£ª¥  
ʵÀýª¥  
sigsuspendµÄÁíÒ»ÖÖÓ¦ÓÃÊǵȴýÒ»¸öÐźŴ¦Àí³ÌÐòÉèÖÃÒ»¸öÈ«¾Ö±äÁ¿¡£ÔÚ³ÌÐò10ª±  
16ÖУ¬²¶  
×½ÖжÏÐźźÍÍ˳öÐźÅÁ½Õߣ¬µ«ÊÇÏ£ÍûÖ»ÓÐÔÚ²¶×½µ½Í˳öÐźÅʱÔÙ¼ÌÐøÖ´ÐÐmain³Ì  
Ðò¡£´Ë³Ì  
ÐòµÄÑù±¾Êä³öÊÇ£ºª¥  
$ aª±outª¥  
^? ¼üÈëÎÒÃǵÄÖжÏѧ·ûª¥  
interruptª¥  
^? ÔٴμüÈëÎÒÃǵÄÖжÏ×Ö·ûª¥  
interruptª¥  
^? ÔÙÒ»´Îª¥  
interruptª¥  
^£¯$ ÓÃÍ˳ö·ûÖÕÖ¹ª¥  
¿¼Âǵ½ANSI CµÄ·ÇPOSIXϵͳ£¬ÒÔ¼°POSIXϵͳÁ½ÕßÖ®¼äµÄ¿ÉÒÆÖ²ÐÔ£¬ÔÚÒ»¸öÐźŴ¦  
Àí³ÌÐòÖР 
ÎÒÃÇΨһӦµ±×öµÄÊǸ³Ò»¸öÖµ¸øÀàÐÍΪsig-atomic-tµÄ±äÁ¿¡£POSIXª±1¹æ¶¨µÃ¸ü¶à  
һЩ£¬Ëü  
˵Ã÷ÁËÔÚÒ»¸öÐźŴ¦Àí³ÌÐòÖпÉÒÔ°²È«µØµ÷Óõĺ¯Êý±í(ͼ10ª±3)£¬µ«ÊÇÈç¹ûÕâÑù  
À´±àд´ú  
Â룬ÔòËü¿ÉÄܲ»»áÕýÈ·µØÔÚ·ÇPOSIXϵͳÉÏÔËÐС£ª¥  
¡¼£È£Ô£µ"¡½³ÌÐò10ª±16 ÓÃsigsuspendµÈ´ýÒ»¸öÈ«¾Ö±äÁ¿±»ÉèÖꥡ¼£È£Ô£µ¡½  
ʵÀýª¥  
¿ÉÒÔÓÃÐźÅʵÏÖ¸¸×Ó½ø³ÌÖ®¼äµÄͬ²½£¬ÕâÊÇÐźÅÓ¦ÓõÄÁíÒ»¸öʵÀý¡£³ÌÐò10ª±17ʵ  
ÏÖÁË8ª±8  
½ÚÖÐÌáµ½µÄÎå¸öÀý³Ì£ºTELL-WAIT¡¢TELL-PARENT¡¢TELL-CHILD¡¢WAIT-PARENTºÍWA  
IT-CHILD  
¡£  
ÆäÖÐʹÓÃÁËÁ½¸öÓû§¶¨ÒåµÄÐźţºSIGUSR1Óɸ¸½ø³Ì·¢Ë͸ø×Ó½ø³Ì£»SIGUSR2ÓÉ×Ó½ø  
³Ì·¢Ë͸ø  
¸¸½ø³Ì¡£ÔÚ³ÌÐò14ª±3ÖУ¬ÎÒÃÇ˵Ã÷ÁËÓùܵÀµÄÕâÎå¸öº¯ÊýµÄÁíÒ»ÖÖʵÏÖ¡£ª¥  
³ÌÐò10ª±17 ¸¸×Ó½ø³Ì¿ÉÓÃÀ´ÊµÏÖͬ²½µÄÀý³Ìª¥  
Èç¹ûÔڵȴýÐźŷ¢ÉúʱϣÍûȥ˯Ãߣ¬ÔòSigsuspendº¯Êý¿ÉÒÔÂú×ã´ËÖÖÒªÇó(ÕýÈçÔÚ  
Ç°ÃæÁ½¸ö  
Àý×ÓÖÐËùʾ)£¬µ«ÊÇÈç¹ûÔڵȴýÐÅºÅÆÚ¼äÏ£Íûµ÷ÓÃÆäËüϵͳº¯ÊýÔò¾ùÈçºÎÄØ?²»ÐҵĠ 
ÊǶԴËÎÊ  
ÌâûÓпɿ¿µÄ½â¾ö·½·¨¡£ª¥  
ÔÚ³ÌÐò17ª±13ÖÐÎÒÃÇÓöµ½ÁËÕâÖÖÇé¿ö¡£ÎÒÃDz¶×½SIGINTºÍSIGALRMÕâÁ½ÖÖÐźţ¬ÔÚ  
Ðźŷ¢Éú  
ʱ£¬ÕâÁ½¸öÐźŴ¦Àí³ÌÐò¶¼ÉèÖÃÒ»¸öÈ«¾Ö±äÁ¿¡£ÓÃsignal-intrº¯ÊýÉèÖÃÕâÁ½¸öÐÅ  
ºÅ´¦Àí³Ì  
Ðò£¬Ê¹µÃËüÃÇÖжÏÈÎÒ»±»×èÈûµÄÂýËÙϵͳµ÷Óᣵ±ÎÒÃÇ×èÈûÔÚselectº¯Êýµ÷ÓÃ(¼û  
12ª±5ª±1  
½Ú)£¬µÈ´ýÂýËÙÉ豸µÄÊäÈëʱºÜ¿ÉÄÜ·¢ÉúÕâÁ½ÖÖÐźš£(ÒòΪ³£ÉèÖÃÄÖÖÓÒÔ×èÖ¹ÓÀÔ¶  
µÈ´ýÊäÈë  
£¬ËùÒÔÕâ¶ÔSIGALRMÊÇÌØ±ðÕæÊµµÄ¡£)ÎÒÃÇÄܾ¡Á¦×öµ½µÄÊÇ£ºª¥  
if (intr ¼£Ã£Ä££ª³£²¡½flag) £¯*ÎÒÃǵÄSIGINT´¦Àí³ÌÐòÉèÖñêÖ¾ª¥  
handle ¼£Ã£Ä££ª³£²¡½intr();ª¥  
if(alrm ¼£Ã£Ä££ª³£²¡½flag) £¯* *£¯¡­¡­ SIGALRM¡­¡­ª¥  
handle ¼£Ã£Ä££ª³£²¡½alrm();ª¥  
£¯* ÔÚ´Ë´¦·¢ÉúµÄÐźű»¶ªÊ§ª¥  
while (select(¡­£©<0){ª¥  
if(errno==EINTR){ª¥  
if(alrm ¼£Ã£Ä££ª³£²¡½flag)ª¥  
handle ¼£Ã£Ä££ª³£²¡½alrm();ª¥  
else if (intr ¼£Ã£Ä££ª³£²¡½flag)ª¥  
handle ¼£Ã£Ä££ª³£²¡½intr();ª¥  
}elseª¥  
£¯* Ä³¸öÆäËü´í *£¯ª¥  
}ª¥  
ÔÚµ÷ÓÃselect֮ǰ²âÊÔ¸÷È«¾Ö¸½±êÖ¾£¬Èç¹ûselect·µ»ØÒ»¸öÖжϵÄϵͳµ÷ÓÃ´í£¬Ôò  
ÔٴνøÐР 
²â  
ÊÔ¡£Èç¹ûÔÚǰÁ½¸öifÓï¾äºÍºó¹ýµÄselectµ÷ÓÃÖ®¼ä²¶×½µ½Á½¸öÐÅÖеÄÈÎÒ»¸ö£¬ÔòÎÊ  
Ìâ¾Í·¢Éú  
ÁË¡£ÕýÈç´úÂëÖеÄ×¢ÊÍËùÖ¸³öµÄ£¬ÔÚ´Ë´¦·¢ÉúµÄÐźŶªÊ§ÁË¡£µ÷ÓÃÁËÏàÓ¦µÄÐźŴ¦  
Àí³ÌÐò£¬  
ËüÃÇÉèÖÃÁËÏàÓ¦µÄÈ«¾Ö±äÁ¿£¬µ«ÊÇselect¾ö²»»á·µ»Ø(³ý·ÇijЩÊý¾ÝÒÑ×¼±¸ºÃ¿É¶Á  
)¡£ª¥  
ÎÒÃÇÏëÒªÄܹ»×öµÄÊÇÏÂÁв½ÖèÐòÁУºª¥  
1ª±×èÈûSIGINTºÍSIGALRMª¥  
2ª±²âÊÔÁ½¸öÈ«¾Ö±äÁ¿ÒÔÅбðÊÇ·ñ·¢ÉúÁËÒ»¸öÐźţ¬Èç¹ûÒÑ·¢ÉúÔò´¦Àí´ËÌõ¼þ¡£ª¥  
   
3ª±µ÷ÓÃselect(»òÈÎºÎÆäËüϵͳµ÷Óã¬ÀýÈçread)²¢½â³ý¶ÔÕâÁ½¸öÐźŵÄ×èÈû£¬Õâ  
Á½¸ö²Ù×÷  
Òª×÷Ϊһ¸öÔ­×Ó²Ù×÷¡£ª¥  
sigsuspendº¯Êý½öµ±µÚ3²½ÊÇÒ»¸öpause²Ù×÷ʱ²Å°ïÖúÎÒÃÇ¡£ª¥  
10ª±17¡þabortº¯Êýª¥  
Ç°ÃæÒÑÌá¼°abortº¯ÊýµÄ¹¦ÄÜÊÇʹ³ÌÐòÒì³£ÖÕÖ¹¡£ª¥  
#include<stdlibª±h>ª¥  
void abort(void);ª¥  
´Ëº¯Êý²»·µ»Øª¥  
´Ëº¯Êý½«SIGABRTÐźŷ¢Ë͸øµ÷Óýø³Ì¡£Ò»¸ö½ø³Ì²»Ó¦ºöÂÔ´ËÐźš£ª¥  
ANSICÒªÇóÈô²¶×½µ½´ËÐźŶøÇÒÏàÓ¦ÐźŴ¦Àí³ÌÐò·µ»Ø£¬abortÈÔ²»»á·µ»Øµ½Æäµ÷Óà 
Õß¡£Èç¹û  
²¶×½µ½Ðźţ¬ÔòÐźŴ¦Àí³ÌÐò²»ÄÜ·µ»ØµÄΨһ·½·¨ÊÇËüµ÷ÓÃexit¡¢exit¡¢longjmp  
»òsiglong  
jmp¡£(10ª±15½ÚÌÖÂÛÁËÔÚlongjmpºÍsiglongjmpÖ®¼äµÄÇø±ð)¡£POSIXª±1Ҳ˵Ã÷abo  
rt¸´¸ÇÁË  
½ø³Ì¶Ô´ËÐźŵÄ×èÈûºÍºöÂÔ¡£ª¥  
Èýø³Ì²¶×½SIGABRTµÄÒâͼÊÇ£ºÔÚ½ø³ÌÖÕֹ֮ǰÓÉÆäÖ´ÐÐËùÐèµÄÇå³ý²Ù×÷¡£Èç¹û½ø  
³Ì²¢²»ÔÚ  
ÐźŴ¦Àí³ÌÐòÖÐÖÕÖ¹×Ô¼º£¬POSIXª±1˵Ã÷µ±ÐźŴ¦Àí³ÌÐò·µ»ØÊ±£¬abortÖÕÖ¹¸Ã½ø  
³Ì¡£ª¥  
ANSI C¶Ô´Ëº¯ÊýµÄ¹æ¸ñ˵Ã÷½«ÕâÒ»ÎÊÌâÁôÓÉʵÏÖ¾ö¶¨£¬¶ø²»¹ÜÊä³öÁ÷ÊÇ·ñË¢ÐÂÒÔ¼°  
²»¹ÜÁÙʱ  
Îļþ(5ª±13½Ú)ÊÇ·ñɾ³ý¡£POSIXª±1µÄÒªÇóÔò½øÁËÒ»²½£¬ËüÒªÇóÈç¹ûabortµ÷ÓÃÖÕÖ¹  
½ø³Ì£¬  
ÔòËüÓ¦¸ÃÓжÔËùÓдò¿ªµÄ±ê×¼£É£¯£ÏÁ÷µ÷ÓÃfcloseµÄЧ¹û¡£µ«ÊÇÈç¹ûabortµ÷Óò¢  
²»ÖÕÖ¹½ø  
³Ì£¬ÔòËü¶Ô´ò¿ªÁ÷Ò²²»Ó¦ÓÐÓ°Ïì¡£ÕýÈçÎÒÃǽ«ÔÚºóÃæËù¿´µ½µÄ£¬ÕâÖÖÒªÇóÊǺÜÄÑʵ  
Ïֵġ£ª¥  
ϵͳVµÄÔçÆÚ°æ±¾ÖУ¬abortº¯Êý²úÉúSIGIOTÐźš£¸ü½øÒ»²½£¬Ò»¸ö½ø³ÌºöÂÔ´ËÐźŠ 
£¬»òÕß²¶  
×½Ëü²¢´ÓÐźŴ¦Àí³ÌÐò·µ»Ø¶¼ÊÇ¿ÉÒԵģ¬ÔÚ·µ»ØÇé¿öÏ£¬abort·µ»Øµ½ËüµÄµ÷ÓÃÕß  
¡£ª¥  
4ª±3BSD²úÉúSIGILLÐźš£ÔÚ´Ë֮ǰ£¬¸Ãº¯Êý½â³ý¶Ô´ËÐźŵÄ×èÈû£¬½«ÆäÅäÖûָ´  
ΪSIG-DFL  
(ÖÕÖ¹²¢¹¹ÔìcoreÎļþ)¡£Õâ×èÖ¹Ò»¸ö½ø³ÌºöÂÔ»ò²¶×½´ËÐźš£ª¥  
SVR4ÔÚ²úÉú´ËÐźÅ֮ǰ¹Ø±ÕËùÓÐI£¯OÁ÷¡£ÔÚÁíÒ»·½Ã棬4ª±3+BSDÔò¿É×ö´Ë²Ù×÷¡£¶Ô  
ÓÚ±£»¤ÐÔ  
µÄ³ÌÐòÉè¼Æ£¬Èç¹ûÏ£Íûˢбê×¼I£¯OÁ÷£¬ÔòÔÚµ÷ÓÃabort֮ǰҪ×öÕâÖÖ²Ù×÷¡£ÔÚer  
r-dumpº¯  
ÊýÖÐʵÏÖÁËÕâÒ»µã(¸½Â¼B)¡£ª¥  
ÒòΪ´ó¶àÊýUnix tmpfile(ÁÙʱÎļþ)µÄʵÏÖÔÚ´´½¨¸ÃÎļþÖ®ºóÁ¢¼´µ÷ÓÃUnlink£¬Ëù  
ÒÔANSI C  
¹ØÓÚÁÙʱÎļþµÄ¾¯¸æÍ¨³£ÓëÎÒÃÇÎ޹ء£ª¥  
ʵÀýª¥  
³ÌÐò10ª±18°´POSIXª±1µÄ˵Ã÷ʵÏÖÁËabortº¯Êý¡£¶Ô´¦Àí´ò¿ªµÄ±ê×¼I£¯OÁ÷µÄÒªÇó  
ÊÇÄÑÓÚʵ  
ÏÖ  
µÄ¡£Ê×ÏÈÎÒÃDz鿴Èç¹ûÖ´ÐÐĬÈ϶¯×÷£¬²¢ÇÒÈç¹ûÎÒÃÇË¢ÐÂËùÓбê×¼I£¯£ÏÁ÷¡£Õâ²¢  
²»µÈ¼ÛÓÚ  
¶ÔËùÓдò¿ªµÄÁ÷µ÷ÓÃfclose(ÒòΪֻˢÐÂËüÃÇ£¬²¢²»¹Ø±ÕËüÃÇ)£¬µ«Êǵ±½ø³ÌÖÕֹʱ  
£¬ÏµÍ³»á  
¹Ø±ÕËùÓдò¿ªÎļþ¡£Èç¹û½ø³Ì²¶×½´ËÐźŲ¢·µ»Ø£¬ÔòÎÒÃÇË¢ÐÂËùÓеÄÁ÷¡£(Èç¹û½ø  
³Ì²¶×½´Ë  
Ðźţ¬²¢ÇÒ²»·µ»Ø£¬ÔòÎÒÃÇÒ²²»»á´¥¼°±ê×¼£É£¯£ÏÁ÷¡£)ÎÒÃÇûÓд¦ÀíµÄΨһÌõ¼þ  
ÊÇÈç¹û½ø  
³Ì²¶×½´ËÐźţ¬È»ºóµ÷ÓÃ-exit¡£ÔÚÕâÖÖÇé¿öÏ£¬ÈκÎδˢеÄÔÚ´æ´¢Æ÷Öеıê×¼  
I£¯O»º´æ  
¶¼±»¶ªÆú¡£ÎÒÃǼٶ¨²¶×½´ËÐźţ¬²¢Ìصص÷ÓÃ-exitµÄµ÷ÓÃÕß²¢²»ÏëҪˢлº´æ¡£  
ª¥  
»ØÒä10ª±9½Ú£¬Èç¹ûµ÷ÓÃkillʹΪµ÷ÓÃÕß²úÉúÐźţ¬²¢ÇÒÈç¹û¸ÃÐźÅÊDz»±»×èÈûµÄ  
(ÔÚ³ÌÐò10  
ª±18Öб£Ö¤×ö³öÁËÕâÒ»µã)£¬ÔòÔÚkill·µ»ØÇ°¸ÃÐźžͱ»´«Ë͸øÁ˸ýø³Ì¡£ÕâÑùÎÒ  
ÃǾͿÉÈ·  
ÖªÈç¹û¶ÔkillµÄµ÷Ó÷µ»ØÁË£¬Ôò¸Ã½ø³ÌÒ»¶¨ÒѲ¶×½µ½¸ÃÐźţ¬²¢ÇÒÒ²´Ó¸ÃÐźŴ¦Àí  
³ÌÐò·µ»Ø  
¡£ª¥  
³ÌÐò10ª±18 abortµÄPOSIXª±1ʵÏÖª¥  
10ª±18¡þsystemº¯Êýª¥  
ÔÚ8ª±12½ÚÒѾ­ÓÐÁËÒ»¸ösystemº¯ÊýµÄʵÏÖ¡£µ«ÊǸð汾²¢²»×öÈκÎÐźŴ¦Àí¡£PO  
SIXª±2Òª  
ÇósystemºöÂÔSIGINTºÍSIGQUIT£¬×èÈûSIGCHLD¡£ÔÚ¸ø³öÒ»¸öÕýÈ·µØ´¦ÀíÕâЩÐźŵĠ 
Ò»¸ö°æ±¾  
֮ǰ£¬ÏÈ˵Ã÷ΪʲôҪ¿¼ÂÇÐźŴ¦Àí¡£ª¥  
ʵÀýª¥  
³ÌÐò10ª±19ʹÓÃ8ª±12½ÚÖеÄsystem°æ±¾£¬ÓÃÆäµ÷ÓÃed(1)±à¼­³ÌÐò¡£(edºÜ¾ÃÒÔÀ´  
¾ÍÊÇUnix  
µÄ×é³É²¿·Ö¡£ÔÚÕâÀïʹÓÃËüµÄÔ­ÒòÊÇ£ºËüÊÇÒ»¸ö½»»¥Ê½µÄ²¶×½ÖжϺÍÍ˳öÐźŵij̠ 
Ðò¡£Èô´Ó  
shellµ÷ÓÃed£¬²¢°´ÖжÏ×Ö·û£¬ÔòËü²¶×½ÖжÏÐźŲ¢´òÓ¡Îʺŷû¡£ËüÒ²½«¶ÔÍ˳ö·û  
µÄ´¦Àí·½  
ʽÉèÖÃΪºöÂÔ¡£)ª¥  
³ÌÐò10ª±19¡þÓÃsyetemµ÷ÓÃed±à¼­³ÌÐòª¥  
³ÌÐò10ª±19²¶×½SIGINTºÍSIGCHLD¡£Èôµ÷ÓÃËüÔò¿ÉµÃ£ºª¥  
$ aª±outª¥  
a ½«ÕýÎÄÌí¼ÓÖÁ±à¼­Æ÷»º´æª¥  
Here is one line of textª¥  
and anotherª¥  
ÐÐÊ׵ĵãÍ£Ö¹Ìí¼Ó·½Ê½ª¥  
1£¬$p ´òÓ¡µÚ1ÐÐÖÁ×îºó1ÐУ¬ÒÔ±ã¹Û²ì»º´æÖеÄÄÚÈݪ¥  
Here is one line of textª¥  
and another ½«»º´æÐ´ÖÁÒ»Îļþª¥  
w tempª±foo ±à¼­Æ÷³ÆÐ´ÁË37¸ö×Ö½Úª¥  
37 À뿪±à¼­Æ÷ª¥  
qª¥  
caught SIGCHLDª¥  
µ±±à¼­³ÌÐòÖÕֹʱ£¬¶Ô¸¸½ø³Ì(aª±ouÊ®½ø³Ì)²úÉúSIGCHLDÐźš£¸¸½ø³Ì²¶×½Ëü£¬Ö´  
ÐÐÆä´¦Àí  
³ÌÐòsig-chid£¬È»ºó´ÓÆä·µ»Ø¡£µ«ÊÇÈô¸¸½ø³ÌÕý²¶×½SIGCHLDÐźţ¬ÒòΪËüÒÑ´´½¨  
×Ô¼ºµÄ×Ó  
½øÎ»£¬ËùÒÔËüÓ¦µ±ÕâÑù×ö£¬Ê¹ÆäÁ˽âºÎʱËüµÄ×Ó½ø³ÌÒÑÖÕÖ¹¡£ÔÚsystemº¯ÊýÖ´ÐÐʱ  
£¬¸¸½ø³Ì  
ÖиÃÐźŵĴ«ËÍÓ¦µ±×èÈû¡£È·Êµ£¬Õâ¾ÍÊÇPOSIXª±2Ëù˵Ã÷µÄ¡£·ñÔò£¬µ±system´´½¨  
µÄ×Ó½ø³Ì  
½áÊøÊ±£¬systemµÄµ÷ÓÃÕß¿ÉÄÜ´íÎóµØÈÏΪ£¬Ëü×Ô¼ºµÄÒ»¸ö×Ó½ø³Ì½áÊøÁË¡£ª¥  
Èç¹ûÎÒÃÇÔÙ´ÎÖ´ÐиóÌÐò£¬ÔÚÕâ´ÎÔËÐÐʱ½«Ò»¸öÖжÏÐźŴ«Ë͸ø±à¼­³ÌÐò£¬Ôò¿ÉµÃ  
£ºª¥  
$ aª±out ª¥  
a ½«ÕýÎÄÌí¼ÓÖÁ±à¼­Æ÷»º´æª¥  
hello,worldª¥  
ª± ÐÐÊ׵ĵãÍ£Ö¹Ìí¼Ó·½Ê½ª¥  
1£¬$p ´òÓ¡µÚ1½ÖÖÁ×îºó1ÐЪ¥  
hello,worldª¥  
w etmpª±foo ½«»º´æÐ´ÖÁÒ»Îļþª¥  
13 ±à¼­Æ÷³ÆÐ´ÁË13¸ö×Ö½Úª¥  
^? ¼üÈëÖжϷûª¥  
? ±à¼­Æ÷²¶×½Ðźţ¬´òÓ¡ÎʺŪ¥  
caught SIGINT ¸¸½ø³ÌÖ´ÐÐͬһ²Ù×÷ª¥  
q À뿪±à¼­Æ÷ª¥  
caught SIGCHLDª¥  
»ØÒä9ª±6½Ú¿ÉÖª£¬°´ÖжÏ×Ö·ûʹÖжÏÐźŴ«Ë͸øÇ°Ì¨½ø³Ì×éÖеÄËùÓнø³Ì¡£Í¼10ª±  
7ÏÔʾÁË  
±à¼­³ÌÐòÕýÔÚ½øÐÐʱµÄ½ø³Ì°²ÅÅ¡£ª¥  
ͼ10ª±7 ³ÌÐò10ª±19ÔËÐÐʱµÄǰ¡¢ºǫ́½ø³Ì×骥  
ÔÚÕâһʵÀýÖУ¬SIGINT±»Ë͸øÈý¸öǰ̨½ø³Ì¡£(shell½ø³ÌºöÂÔ´ËÐźÅ)´ÓÊä³öÖпɠ 
¼û£¬Qª±ou  
t½ø³ÌºÍed½ø³Ì²¶×½¸ÃÐźš£µ«ÊÇ£¬µ±ÎÒÃÇÓÃsystemÔËÐÐÁíÒ»µÀ³ÌÐò(ÀýÈçed)ʱ£¬  
²»Ó¦Ê¹¸¸  
¡¢×Ó½ø³ÌÁ½Õß¶¼²¶×½ÖÕ¶ËÒ»²úÉúµÄÁ½¸öÐźţºÖжϺÍÍ˳ö¡£ÕâÁ½¸öÐźÅÖ»Ó¦Ë͸øÕý  
ÔÚÔËÐеĠ 
³ÌÐò£º×Ó½ø³Ì¡£ÒòΪÓÉsystemÖ´ÐеÄÃüÁî¿ÉÄÜÊǽ»»¥×÷ÓÃÃüÁî(Ϊ±¾ÀýÖеÄed)£¬ÒÔ  
¼°ÒòΪsy  
stemµÄµ÷ÓÃÕßÔÚ³ÌÐòÖ´ÐÐʱ·ÅÆúÁË¿ØÖÆ£¬µÈ´ý¸ÃÖ´ÐгÌÐòµÄ½áÊø£¬ËùÒÔsystemµÄµ÷  
ÓÃÕ߾Ͳ»  
Ó¦½ÓÊÕÕâÁ½¸öÖÕ¶ËÒ»²úÉúµÄÐźš£Õâ¾ÍÊÇΪʲôPOSIXª±2¹æ¶¨systemµÄµ÷ÓÃÕßÓ¦µ±  
ºöÂÔÕâÁ½  
¸öÐźŵÄÔ­Òò¡£ª¥  
ʵÀýª¥  
³ÌÐò10ª±20ÊÇsystemº¯ÊýµÄÁíÒ»¸öʵÏÖ£¬Ëü½øÐÐÁËËùÒªÇóµÄÐźŴ¦Àí¡£ª¥  
³ÌÐò10ª±20ÊÇystemº¯ÊýµÄPOSIXª±2ʵÏÖª¥  
ºÜ¶à½ÏÔçµÄÎÄÏ×ÖÐʹÓÃÏÂÁгÌÐò¶ÎºöÂÔÖжϺÍÍ˳öÐźţºª¥  
if((pid=fork())<0)ª¥  
err ¼£Ã£Ä££ª³£²¡½sys("fork error");ª¥  
else if (pid==0){ £¯* ×Ó½ø³Ì *£¯ª¥  
execl(¡­)£»ª¥  
 ¼£Ã£Ä££ª³£²¡½exit(127);ª¥  
}ª¥  
£¯* parent *£¯ª¥  
old ¼£Ã£Ä££ª³£²¡½intr=signal(SIGINT,SIG ¼£Ã£Ä££ª³£²¡½IGN);ª¥  
old ¼£Ã£Ä££ª³£²¡½quit=signal(SIGQUIT,SIG ¼£Ã£Ä££ª³£²¡½IGN);ª¥  
waitpid(pid,&status,0)ª¥  
signal(SIGINT,old ¼£Ã£Ä££ª³£²¡½intr);ª¥  
signal(SIGQUIT,old ¼£Ã£Ä££ª³£²¡½quit);ª¥  
Õâ¶Î´úÂëµÄÎÊÌâÊÇ£ºÔÚforkÖ®ºó²»Äܱ£Ö¤¸¸½ø³Ì»¹ÊÇ×Ó½ø³ÌÏÈÔËÐС£Èç¹û×Ó½ø³ÌÏÈ  
ÔËÐУ¬¸¸  
½ø³ÌÔÚÒ»¶Îʱ¼äºóÔÙÔËÐУ¬ÄÇôÔÚ¸¸½ø³Ì½«ÖжÏÐźŵÄÅäÖøıäΪºöÂÔ֮ǰ£¬¾Í¿É  
ÄܲúÉúÕâ  
ÖÖÐźš£ÓÉÓÚÕâÖÖÔ­ÒòÔÚ³ÌÐò10ª±20ÖÐÔÚfork֮ǰ¾Í¸Ä±ä¶Ô¸ÃÐźŵÄÅäÖᣪ¥  
×¢Ò⣬×Ó½ø³ÌÔÚµ÷ÓÃexecl֮ǰҪÏȻָ´ÕâÁ½¸öÐźŵÄÅäÖá£Õâ¾ÍÔÊÐíÔÚµ÷ÓÃÕßÅä  
ÖõĻù´¡  
ÉÏ£¬execl¿É½«ËüÃǵÄÅäÖøü¸ÄΪĬÈÏÖµ¡£ª¥  
systemµÄ·µ»ØÖµª¥  
systemµÄ·µ»ØÖµÊÇshellµÄÖÕֹ״̬£¬Ëü²»×ÜÊÇÖ´ÐÐÃüÁî×Ö·û´®½ø³ÌµÄÖÕֹ״̬¡£  
ÔÚ³ÌÐò8ª±  
13ÖÐÓÐһЩÀý×Ó£¬Æä½á¹ûÕýÊÇÎÒÃÇËùÆÚÍûµÄ£»Èç¹ûÖ´ÐÐÒ»ÌõÈçdateÄÇÑùµÄ¼òµ¥ÃüÁî  
£¬ÔòÆäÖÕ  
ֹ״̬ÊÇ0¡£Ö´ÐÐshellÃüÁîexit44£¬ÔòµÃÖÕֹ״̬44¡£ÔÚÐźŷ½ÃæÓÖÈçºÎÄØ?ª¥  
ÈÃÎÒÃÇÔËÐгÌÐò8ª±14£¬²¢ÏòÕýÖ´ÐеÄÃüÁî·¢ËÍһЩÐźš£ª¥  
$ tsys "sleep 30"ª¥  
^?normal termination,exit status=130 wetype our interrupt key¼üÈëÖжϪ¥  
   
$ tsys "sleep 30"ª¥  
^£Üsh:946 Quit Í˳öª¥  
normal termination,exit status=131ª¥  
µ±ÓÃÖжÏÐźÅÖÕÖ¹sleepʱ£¬pr-exitº¯Êý(³ÌÐò8ª±3)ÈÏΪËüÕý³£ÖÕÖ¹¡£µ±ÓÃÍ˳ö¼ü  
Ïûsleep  
½ø³Ìʱ£¬·¢ÉúͬÑùµÄÊÂÇé¡£ÖÕֹ״̬130£¬131ÓÖÊÇÔõÑùµÃµ½µÄÄØ?Ô­À´Bourne she  
llÓÐÒ»¸ö  
ÔÚÆäÎĵµÖÐûÓÐÇå³þµØËµÃ÷µÄÌØÐÔ£¬ÆäÖÕֹ״̬ÊÇ128¼ÓÉÏËüËùÖ´ÐеÄÃüÁîÓÉÒ»¸ö  
ÐźÅÖÕÖ¹  
ʱµÄ¸ÃÐźűàºÅÊý¡£Óý»»¥·½Ê½Ê¹ÓÃshell¿ÉÒÔ¿´µ½ÕâÒ»µã¡£ª¥  
$ sh È·±£ÔËÐÐBourne shellª¥  
$ sh -c "sleep 30"ª¥  
^? °´Öжϼüª¥  
$ echo $? ´òÓ¡×îºóÒ»ÌõÃüÁîµÄÖÕֹ״̬ª¥  
130ª¥  
$ sh -c "sleep 30"ª¥  
^£Üsh:962 Quit-core dumped °´Í˳ö¼üª¥  
$ echo $?ª¥  
131ª¥  
$ exit À뿪Bourne shellª¥  
ÔÚËùʹÓõÄϵͳÖУ¬SIGINTµÄֵΪ2£¬SIGQUITµÄֵΪ3£¬ÓÚÊǸø³öshellÖÕֹ״̬1  
30£¬131  
¡£ª¥  
ÔÙ×ö¼¸¸öÀàËÆµÄÀý×Ó£¬ÕâÒ»´Î½«Ò»¸öÐźÅÖ±½ÓË͸øshell£¬È»ºó¹Û²ìsystem·µ»ØÊ²  
ô¡£ª¥  
$ tsys "sleep 30" ^ ÕâÒ»´ÎÔÚºǫ́Æô¶¯Ëüª¥  
£Û1£Ý 980ª¥  
$ ps ²é¿´½ø³ÌIDª¥  
PID TT STAT TIME COMMANDª¥  
980 p3 S 0:00 tsys sleep 30ª¥  
981 p3 S 0:00 sh -c sleep 30ª¥  
982 p3 S 0:00 sleep 30ª¥  
985 p3 R 0:00 psª¥  
$ kill -KILL 981ª¥  
kill shellª¥  
abnormal termination,signal number=9ª¥  
£Û1£Ý+Done tsys "sleep 30" &ª¥  
´ÓÖпɼû½öµ±shell±¾ÉíÒì³£ÖÕֹʱ£¬systemµÄ·µ»ØÖµÔÙ±¨¸æÒ»¸öÒì³£ÖÕÖ¹¡£ª¥  
ÔÚ±àдʹÓÃsystemº¯ÊýµÄ³ÌÐòʱ£¬Ò»¶¨ÒªÕýÈ·µØ½âÊÍ·µ»ØÖµ¡£Èç¹ûÖ±½Óµ÷ÓÃfork£¬  
execºÍwa  
it£¬ÔòÖÕֹ״̬Óëµ÷ÓÃsystemÊDz»Í¬µÄ¡£ª¥  
10ª±19¡þsleepº¯Êýª¥  
ÔÚ±¾ÊеĺܶàÀý×ÓÖж¼ÒÑʹÓÃÁËsheepº¯Êý£¬ÔÚ³ÌÐò10ª±4ºÍ10ª±5ÖÐÓÐÁ½¸ösleepµÄ  
ºÜÍêÉÆµÄ  
ʵÏÖ¡£ª¥  
# include<unistdª±h>ª¥  
unsigned int sleep(unsigned int seconds);ª¥  
·µ»Ø£º0»òδ˯µÄÃëÊýª¥  
´Ëº¯Êýʹµ÷Óýø³Ì±»¹ÒÆðÖ±µ½£ºª¥  
1ª±ÒѾ­¹ýÁËsecondsËùÖ¸¶¨µÄǽÉÏʱÖÓʱ¼ä£¬»òÕߪ¥  
2ª±¸Ã½ø³Ì²¶×½µ½Ò»¸öÐźŲ¢´ÓÐźŴ¦Àí³ÌÐò·µ»Ø¡£ª¥  
ÈçͬalarmÐźÅÒ»Ñù£¬ÓÉÓÚijЩϵͳ»î¶¯£¬Êµ¼Ê·µ»ØÊ±¼ä±ÈËùÒªÇóµÄ»á³ÙһЩ¡£ª¥  
   
ÔÚµÚÒ»ÖÖÇéÐΣ¬·µ»ØÖµÊÇ0¡£µ±ÓÉÓÚ²¶×½µ½Ä³¸öÐźţ¬sleepÌáÔç·µ»ØÊ±(µÚ¶þÖÖÇé  
ÐÎ)£¬·µ»Ø  
ÖµÊÇĩ˯ÊǵÄÃëÊý(ËùÒªÇóµÄʱ¼ä¼õʵ¼Ê˯Ãßʱ¼ä)¡£ª¥  
sleep¿ÉÒÔÓÃalarmº¯Êý(10ª±10½Ú)ʵÏÖ£¬µ«Õâ²¢²»ÊÇÒ»¶¨ÒªÇóµÄ¡£µ«ÊÇÈç¹ûʹÓÃa  
larm£¬Ôò  
ÕâÁ½¸öº¯ÊýÖ®¼ä¿ÉÒÔÓн»»¥×÷Óá£POSIXª±1±ê×¼¶ÔÕâЩ½»»¥×÷Óò¢Î´×÷ÈκÎ˵Ã÷¡£  
ÀýÈ磬Èô  
Ïȵ÷ÓÃalarm(10)£¬¹ýÁË3ÃëºóÓÖµ÷ÓÃsleep(5)£¬ÔòÈçºÎÄØ?sleep½«ÔÚ5Ãëºó·µ»Ø(¼Ù  
¶¨ÔÚÕâ  
¶Îʱ¼äÄÚûÓв¶×½µ½ÁíÒ»¸öÐźÅ)£¬µ«ÊÇ·ñÔÚ2ÃëºóÓÖ²úÉúÁíÒ»¸öSIGALRMÐźÅÄØ?Õâ  
ÖÖϸ½ÚÒÀ  
ÀµÓÚʵÏÖ¡£ª¥  
SVR4ÓÃalarmʵÏÖsleep¡£sleep(3)ÊÖ²áÒ³ÖÐ˵Ã÷ÒÔǰ°´ÅŵÄÄÖÖÓÈÔ±»Õý³£´¦Àí¡£Àý  
È磬ÔÚǰ  
ÃæµÄÀý×ÓÖУ¬ÔÚsleep·µ»ØÖ®Ç°£¬Ëü°²ÅÅÔÚ2ÃëºóÔٴε½´ïÄÖÖÓʱ¼ä¡£ÔÚÕâÖÖÇé¿öÏ  
£¬sleep  
·µ»Ø0¡£(ºÜÃ÷ÏÔ£¬sleep±ØÐë±£´æSIGALRMÐźŴ¦Àí³ÌÐòµÄµØÖ·£¬ÔÚ·µ»ØÇ°ÖØÐÂÉèÖà 
Ëü)¡£Áí  
Í⣬Èç¹ûÏÈ×öÒ»´Îalarm(6),3ÃëÖÓÖ®ºóÓÖ×öÒ»´Îsleep(5)£¬ÔòÔÚ3Ãëºósleep·µ»Ø£¬  
¶ø²»ÊÇ5  
ÃëÖÓ¡£¶øsleepµÄ·µ»ØÖµÔòÊÇδ˯¶¨µÄʱ¼ä2Ãë¡£ª¥  
4ª±3+BSDÔòʹÓÃÁíÒ»ÖÖ¼¼Êõ£ºÓÉsetitimer(2)Ìṩ¼ä¸ô¼ÆÊ±Æ÷¡£¸Ã¼ÆÊ±Æ÷¶ÀÁ¢ÓÚa  
larmº¯Êý  
£¬µ«ÔÚÒÔǰÉèÖõļä¸ô¼ÆÊ±Æ÷ºÍsleepÖ®¼äÈÔÄÜÓÐÏ໥×÷Óá£ÁíÍ⣬¼´Ê¹ÄÖÖÓ¼ÆÊ±  
Æ÷(alarm)  
ºÍ¼ä¸ô¼ÆÊ±Æ÷(setitimer)ÊÇ·Ö¿ªµÄ£¬µ«ÊDz»ÐÒËüÃÇʹÓÃͬһSIGALRMÐźš£ÒòΪs  
leepÔÝʱ  
½«¸ÃÐźŵĴ¦Àí³ÌÐò¸Ä±äΪËü×Ô¼ºµÄº¯Êý£¬ËùÒÔÔÚalarmºÍsleepÖ®¼äÈÔ¿ÉÄÜÓв»Ëù  
Ï£ÍûµÄÏà  
»¥×÷Óᣪ¥  
Èç¹û»ìºÏµ÷ÓÃsleepºÍÆäËüÓëʱ¼äÓйصĺ¯Êý£¬ËüÃÇÖ®¼äÓÐÏ໥×÷Óã¬ÔòÄãÓ¦µ±Çå  
³þµØÁ˽⠠
ÄãËùʹÓõÄϵͳÊÇÈçºÎʵÏÖsleepµÄ¡£ª¥  
ÒÔǰ±´¿ËÀ³ÀàµÄsleepʵÏÖ²»ÌṩÈκÎÓÐÓõķµ»ØÐÅÏ¢¡£ÕâÔÚ4ª±3+BSDÖÐÒѾ­½â¾ö  
¡£ª¥  
ʵÏÖª¥  
³ÌÐò10ª±21ÊÇÒ»¸öPOSIXª±1 sleepº¯ÊýµÄʵÏÖ¡£´Ëº¯ÊýÊdzÌÐò10ª±4µÄÐ޸İ棬Ëü  
¿É¿¿µØ´¦  
ÀíÐźţ¬±ÜÃâÁËÔçÆÚʵÏÖÖеľºÌ¬Ìõ¼þ£¬µ«ÊÇÈÔδ´¦ÀíÓëÒÔǰÉèÖõÄÄÖÖÓµÄÏ໥×÷  
Óá£(Õý  
ÈçÇ°ÃæÌáµ½µÄPOSIXª±1²¢Î´¶ÔÕâЩ½»»¥×÷ÓýøÐж¨Òå)¡£ª¥  
³ÌÐò10ª±21 sleepµÄ¿É¿¿ÊµÏÖª¥  
Óë³ÌÐò10ª±4Ïà±ÈΪÁ˿ɿ¿µÄʵÏÖsleep£¬³ÌÐò10ª±21µÄ´úÂë±È½Ï³¤¡£³ÌÐòÖÐûÓÐʹ  
ÓÃÈκÎÐΠ 
ʽµÄ·Ç¾Ö²¿×ªÒÆ(Èç³ÌÐò10ª±5ΪÁ˱ÜÃâÔÚalarmºÍpauseÖ®¼äµÄ¾ºÌ¬Ìõ¼þËù×öµÄÄÇÑù  
)£¬ËùÒÔ  
¶Ô´¦ÀíSIGALRMÐÅºÅÆÚ¼ä¿ÉÄÜÖ´ÐÐµÄÆäËüÐźŴ¦Àí³ÌÐòûÓÐÓ°Ïì¡£ª¥  
10ª±20¡þ×÷Òµ¿ØÖÆÐźŪ¥  
ÔÚͼ10ª±1ÖÐÓÐÁù¸öPOSIXª±1ÈÏΪÊÇÓë×÷Òµ¿ØÖÆÓйصÄÐźš£ª¥  
SIGCHLD Òª½ø³ÌÒÑÍ£Ö¹»òÖÕÖ¹¡£ª¥  
SIGCONT Èç¹û½ø³ÌÒÑÍ£Ö¹£¬ÔòʹÆä¼ÌÐøÔËÐС£ª¥  
SIGSTOP Í£Ö¹ÐźÅ(²»Äܱ»²¶´Ù»òºöÂÔ)¡£ª¥  
SIGTSTP½»»¥Í£Ö¹Ðźš£ª¥  
SIGTTIN Ò»¸öºǫ́½ø³Ì×éµÄ³ÉÔ±¶Á¿ØÖÆÖÕ¶Ë¡£ª¥  
SIGTTOU Ò»¸öºǫ́½ø³Ì×éµÄ³ÉԱд¿ØÖÆÖÕ¶Ë¡£ª¥  
ËäÈ»½öµ±ÏµÍ³Ö§³Ö×÷Òµ¿ØÖÆÊ±£¬POSIXª±1²ÅÒªÇóËüÖ§³ÖSIGCHLD£¬µ«ÊǼ¸ºõËùÓÐUn  
ix°æ±¾£¬¶¼Ö§³ÖÕâÖÖÐźš£ÎÒÃÇÒѾ­ËµÃ÷ÁËÔÚ×Ó½ø³ÌÖÕֹʱÕâÖÖÐźÅÊÇÈçºÎ²úÉúµÄ¡£ª¥  
´ó¶àÊýÓ¦ÓóÌÐò²¢²»´¦ÀíÕâЩÐźš¼CD2¡½½»»¥Ê½shellͨ³£×ö´¦ÀíÕâЩÐźŵÄËùÓР 
¹¤×÷¡£µ±ÎÒÃǰ´¹ÒÆð×Ö·û(ͨ³£ÊÇControl-Z)ʱ£¬SIGTSTP±»ËÍÖÁºǫ́½ø³Ì×éµÄËùÓР 
½ø³Ì¡£µ±ÎÒÃÇ֪ͨshellÔÚǰ̨»òºǫ́»Ö¸´Ò»¸ö×÷ҵʱ£¬¸ÃshellÏò¸Ã×÷ÒµÖеÄËùÓР 
½ø³Ì·¢ËÍSIGCONTÐźš£ÏàÀàËÆ£¬Èç¹ûÏòÒ»¸ö½ø³Ì´«ËÍÁËSIGTTIN»òSIGTTOUÐźţ¬  
Ôò°´ÏµÍ³Ä¬ÈÏ£¬´Ë½ø³Ì¾ÍÍ£Ö¹£¬×÷Òµ¿ØÖÆshellÁ˽⵽ÕâÒ»µãºó¾Í֪ͨÎÒÃÇ¡£ª¥  
Ò»¸öÀýÍâÊǹÜÀíÖն˵Ľø³Ì¡¼CD2¡½ÀýÈ磬vi(1)±à¼­³ÌÐò¡£µ±Óû§Òª¹ÒÆðËüʱ£¬Ëü  
ÐèÒªÄÜÁ˽⵽ÕâÒ»µã£¬ÕâÑùËü¾ÍÄܽ«ÖÕ¶Ë״̬»Ö¸´µ½viÆð¶¯Ê±µÄÇé¿ö¡£ÁíÍ⣬µ±  
ÔÚǰ̨»Ö¸´Ëüʱ£¬ËüÐè  
Òª½«ÖÕ¶Ë״̬ÉèÖûØËùÏ£ÍûµÄ״̬£¬ËüÐèÒªÖØ»­ÖÕ¶ËÆÁÄ»¡£ÎÒÃÇ¿ÉÒÔÔÚÏÂÃæµÄÀý×Ó  
Öй۲쵽  
viÕâÑùµÄ³ÌÐòÊÇÈçºÎ´¦ÀíÕâÖÖÇé¿öµÄ¡£ª¥  
ÔÚ×÷Òµ¿ØÖÆÐźżäÓÐijÖÖÏ໥×÷Óᣵ±¶ÔÒ»¸ö½ø³Ì²úÉúËÄÖÖÍ£Ö¹ÐźÅ(SIGTSTP£¬S  
IGSTOP£¬S  
IGTTIN»òSIGTTOU)ÖеÄÈκÎÒ»ÖÖʱ£¬¶Ô¸Ã½ø³ÌµÄÈÎһĩ¾öµÄSIGCONTÐźžͱ»¶ªÆú  
¡£ÏàÀàËÆ  
£¬µ±¶ÔÒ»¸ö½ø³Ì²úÉúSIGCONTÐźÅʱ£¬¶Ô¸Ãͬһ½ø³ÌµÄÈÎһĩ¾öµÄÍ£Ö¹Ðźű»¶ªÆú  
¡£ª¥  
×¢Ò⣬SIGCONTµÄĬÈ϶¯×÷ÊǼÌÐøÒ»¸ö½ø³Ì£¬Èç¹û¸Ã½ø³ÌÊÇÍ£Ö¹µÄ£¬·ñÔòºöÂÔ´ËÐÅ  
ºÅ¡£Í¨³£  
£¬ÎÒÃǶԸÃÐźÅÎÞÐè×öÈκÎÊÂÇé¡£µ±¶ÔÒ»¸öÍ£Ö¹µÄ½ø³Ì²úÉúÒ»¸öSIGCONTÐźÅʱ£¬  
¸Ã½ø³Ì¾Í  
¼ÌÐø£¬¼´Ê¹¸ÃÐźÅÊDZ»×èÈû»òºöÂÔÒ²ÊÇÈç´Ë¡£ª¥  
ʵÀýª¥  
³ÌÐò10ª±22ÀýʾÁ˵±Ò»µÀ³ÌÐò´¦Àí×÷Òµ¿ØÖÆÊ±ËùʹÓõÄͨ³£µÄ´úÂëÐòÁС£ÕâµÀ³ÌÐò  
Ö»Êǽ«Æä  
±ê×¼ÊäÈë¸´ÖÆµ½Æä±ê×¼Êä³ö£¬µ«ÊÇÔÚÐźŴ¦Àí³ÌÐòÖÐÒÔ×¢ÊÍÐÎʽ¸ø³öÁ˹ÜÀíÆÁÄ»µÄ  
³ÌÐòËùÖ´  
ÐеĵäÐͲÙ×÷¡£µ±³ÌÐò10ª±22Æð¶¯Ê±£¬½öµ±SIGTSTPÐźŵÄÅäÖÃÊÇSIG-DFL£¬ËüÔÙ°²  
ÅŲ¶×½¸Ã  
Ðźš£ÆäÀíÓÉÊÇ£ºµ±´Ë³ÌÐòÓɲ»Ö§³Ö×÷Òµ¿ØÖƵÄshell(ÀýÈ磯bin£¯sh)ËùÆð¶¯Ê±£¬  
´ËÐźŵĠ 
Åä  
ÖÃÓ¦µ±ÉèÖÃΪSIG-IGN¡£Êµ¼ÊÉÏ£¬shell²¢²»ÏÔʽµØºöÂÔ´ËÐźţ¬¶øÊÇinit½«ÕâÈý¸ö  
×÷Òµ¿ØÖÆ  
ÐźÅSIGTSTP¡¢SIGTTINºÍSIGTTOUÉèÖÃΪSIG-IGN¡£È»ºó£¬ÕâÖÖÅäÖÃÓÉËùÓеǼshe  
ll¼Ì³Ð¡£  
Ö»ÓÐ×÷Òµ¿ØÖÆshell²ÅÓ¦½«ÕâÈý¸öÐźÅÖØÐÂÉèÖÃΪSIG-DFL¡£ª¥  
µ±ÎÒÃǼüÈë¹ÒÆð×Ö·ûʱ£¬½ø³Ì½Óµ½SIGTSTPÐźţ¬È»ºó¸ÃÐźŴ¦Àí±»µ÷Óá£Ôڴ˵㠠
ÉÏ£¬ÎÒÃÇ  
Ó¦µ±½øÐÐÓëÖÕ¶ËÓйصĴ¦Àí£º½«¹â±êÒÆµ½×óϽǣ¬»Ö¸´Öն˹¤×÷·½Ê½£¬µÈµÈ¡£ÔÚ½«  
SIGTSTP  
ÖØÐÂÉèÖÃΪĬÈÏÖµ(Í£Ö¹¸Ã½ø³Ì)£¬²¢ÇÒ½â³ýÁ˶ԴËÐźŵÄ×èÈûÖ®ºó£¬½ø³ÌÏò×Ô¼º·¢  
ËÍͬһÐÅ  
ºÅSIGTSTP¡£ª¥  
ÒòΪÏÖÔÚÕý´¦ÀíSIGTSTPÐźţ¬¶øÔÚ²¶×½µ½¸ÃÐÅºÅÆÚ¼äϵͳ×Ô¶¯µØ×èÈûËü£¬ËùÒÔÎÒ  
ÃÇÓ¦µ±½â  
³ý  
¶Ô´ËÐźŵÄ×èÈû¡£½öµ±Ä³¸ö½ø³Ì(ͨ³£ÊÇÕýÏìÓ¦Ò»¸ö½»»¥Ê½fgÃüÁîµÄ×÷Òµ¿ØÖÆshel  
l)Ïò¸Ã½ø  
³Ì·¢ËÍÒ»¸öSIGCONTÐźÅʱ£¬¸Ã½ø³ÌÔÙ¼ÌÐø¡£ÎÒÃDz»²¶×½SIGCONTÐźš£¸ÃÐźŵÄĬ  
ÈÏÅäÖÃÊÇ  
¼ÌÐøÍ£Ö¹µÄ½ø³Ì£¬µ±´Ë·¢Éúʱ£¬´Ë³ÌÐòÈçͬ´Ókillº¯Êý·µ»ØÒ»Ñù¼ÌÐøÔËÐС£µ±´Ë³Ì  
Ðò¼ÌÐøÔË  
ÐÐʱ£¬½«SIGTSTPÐźÅÔÙÉèÖÃΪ²¶×½£¬²¢ÇÒ×öÎÒÃÇËùÏ£Íû×öµÄÖÕ¶Ë´¦Àí¡£(ÀýÈç¿ÉÒÔ  
ÖØ»­ÆÁÄ»  
¡£)ª¥  
ÔÚµÚÊ®°ËÕÂÖн«½éÉÜ´¦ÀíÌØ¶¨µÄ×÷Òµ¿ØÖÆ¹ÒÆð×Ö·ûµÄÁíÒ»ÖÖ·½·¨£¬ÆäÖв¢²»Ê¹ÓÃÐÅ  
ºÅ£¬¶øÊÇ  
ÓɳÌÐò×ÔÉíʶ±ð¸ÃÌØ¶¨×Ö·û¡£ª¥  
³ÌÐò10ª±22 ÈçºÎ´¦ÀíSIGTSTPª¥  
10ª±21¡þÆäËüÌØÕ÷ª¥  
±¾½Ú½éÉÜijЩÒÀÀµÓÚʵÏÖµÄÐÅºÅµÄÆäËüÌØÕ÷¡£ª¥  
ÐźÅÃû×Öª¥  
ijЩϵͳÌṩÊý×é  
extern char *sys-siglist ²¡³£»ª¥  
Êý×éϱêÊÇÐźűàºÅ£¬Êý×éÖеÄÔªËØÊÇÖ¸ÏòÒ»¸öÐźÅ×Ö·û´®Ãû×ÖµÄÖ¸Õë¡£ª¥  
ÕâЩϵͳͨ³£Ò²Ìṩº¯Êýpsignal¡£ª¥  
×Ö·û´®msg(ͨ³£ÊdzÌÐòÃû)Êä³öµ½±ê×¼³ö´í£¬ºóÃæ¸ú×ÅÒ»¸öðºÅºÍÒ»¸ö¿Õ¸ñ£¬ÔÙ¸ú  
×ŶԸÃÐÅ  
ºÅµÄ˵Ã÷£¬×îºóÊÇÒ»¸öÐÂÐзû¡£ª¥  
SVR4ºÍ4ª±3+BSD¶¼Ìṩsys-siglistºÍpsignalº¯Êýª¥  
SVR4ÐźŴ¦Àí³ÌÐòµÄ¸½¼Ó²ÎÊýª¥  
µ±µ÷ÓÃsigaction¶ÔÒ»¸öÐźÅÉèÖÃÅäÖÃʱ£¬¿ÉÒÔÖ¸¶¨sa-flagsÖµSA-SIGINFO(ͼ10ª±  
5)¡£Õâʹ  
Á½¸ö¸½¼Ó²ÎÊý´«¸øÐźŴ¦Àí³ÌÐò¡£ÕûÐ͵ÄÐźűàºÅ×ÜÊÇ×÷ΪµÚÒ»¸ö²ÎÊý´«ËÍ¡£µÚ¶þ  
¸ö²ÎÊý»ò  
ÕßÊÇÒ»¸ö¶¨Ö¸Õ룬»òÕßÊÇÒ»¸öÖ¸Ïòsiginfo½á¹¹µÄÖ¸Õë¡£(µÚÈý¸ö²ÎÊýÌṩÔÚÒ»¸ö½ø  
³ÌÄÚ²»Í¬  
¿ØÖÆÏ̵߳ÄÓйØÐÅÏ¢£¬ÎÒÃÇÔڴ˲»¶ÔËü½øÐÐÌÖÂÛ)¡£ª¥  
struct siginfo {ª¥  
int si ¼£Ã£Ä££ª³£²¡½signo; £¯* ÐźűàºÅ *£¯ª¥  
int si ¼£Ã£Ä££ª³£²¡½errno; £¯* Èô·Ç0£¬ÔòΪ<errnoª±h>ÖеÄerrnoÖµª¥  
int si ¼£Ã£Ä££ª³£²¡½code; £¯* ¸½¼ÓµÄinfo(È¡¾öÓÚÐźÅ)  
pid ¼£Ã£Ä££ª³£²¡½t si ¼£Ã£Ä££ª³£²¡½pid; £¯* ·¢Ëͽø³ÌID *£¯  
uid ¼£Ã£Ä££ª³£²¡½t si ¼£Ã£Ä££ª³£²¡½unid; £¯* ·¢Ëͽø³Ìʵ¼ÊÓû§ID *£¯  
£¯* ÆäËü×ֶΠ*£¯  
};ª¥  
¶ÔÓÚÓÉÓ²¼þ²úÉúµÄÐźţ¬ÀýÈçSIGFPE£¬si-codeÖµ¸ø³ö¸½¼ÓµÄÐÅÏ¢£»FPE-INTDIV±í  
ʾÕûÊý³ý  
ÒÔ0£¬FPE-FLTDIV±íʾ¸¡µãÊý³ýÒÔ0µÈµÈ¡£ÈçÈôsi-codeСÓÚ»òµÈÓÚ0£¬Ôò±íʾÐźÅÊÇ  
Óɵ÷ÓÃkill(2)µÄÓû§½ø³Ì²úÉúµÄ¡£ÔÚ´ËÇé¿öÏ£¬si-pidºÍsi-uid¸ø³öÁË·¢Í¸´ËÐźŵĠ 
½ø³ÌµÄÓйØÐÅÏ¢¡£ÒÀÀµÓÚÕý±»²¶×½µÄÐźţ¬»¹ÓÐһЩÐÅÏ¢¿ÉÓ㬼ûSVR4 siginfo(5)ÊÖ  
²áÒ³¡£ª¥  
   
4ª±3+BSDÐźŴ¦Àí³ÌÐòµÄ¸½¼Ó²ÎÊýª¥  
4ª±3+BSD×ÜÊÇÓÃÈý¸ö²ÎÊýµ÷ÓÃÐźŴ¦Àí³ÌÐò£ºª¥  
handler(int signo,int code,struct sigcontext *scp);ª¥  
²ÎÊýsignoÊÇÐźűàºÅ£¬code¸ø³öijЩÐźŵĸ½¼ÓÐÅÏ¢¡£ÀýÈ磬¶ÔÓÚSIGFPEµÄcode  
ÖµFPE-INT  
   
DIV-TRAP±íʾÕûÊý³ýÒÔ0¡£µÚÈý¸ö²ÎÊýSCPÊÇÓëÓ²¼þÓйصġ£ª¥  
 
   
10ª±22¡þÕªÒªª¥  
ÐźÅÓÃÓںܶà±È½Ï¸´ÔÓµÄÓ¦ÓóÌÐòÖС£¶Ô½øÐÐÐźŴ¦ÀíµÄÔ­ÒòºÍ·½Ê½ÓнϺÃÀí½â¶Ô  
¸ß¼¶Unix³ÌÐòÉè¼ÆÊǼ«ÆäÖØÒªµÄ¡£±¾Õ¶ÔUnixÐźŽøÐÐÏêϸ¶øÇұȽÏÉîÈëµÄ½éÉÜ¡£  
¿ªÊ¼Ê±ÏÈ˵Ã÷ÒÔǰµÄÐźÅʵʩµÄÎÊÌâÒÔ¼°ËüÃÇÓÖÊÇÈçºÎÏÔÏÖ³öÀ´µÄ¡£È»ºó½éÉÜPOSIX1  
µÄ¿É¿¿ÐźŸÅÄîÒÔ¼°ËùÓÐÏà¹ØµÄº¯Êý¡£ÔÚ´Ë»ù´¡ÉϽÓ×ÅÌṩÁËabort¡¢systemºÍsleep  
º¯ÊýµÄPOSIXª±1ʵÏÖ¡£×îºóÒÔ¹Û²ì·ÖÎö×÷Òµ¿ØÖÆÐźŽáÊø¡£  
   
   
   
   
   
   
--  
¡ù ÐÞ¸Ä:£®bebe ÓÚ Mar 12 16:26:19 Ð޸ı¾ÎÄ£®[FROM: 202.38.248.204]  
 
 
-- 
¡ù À´Ô´:¡¤BBS Ë®Ä¾Ç廪վ smth.org¡¤[FROM: 202.38.248.38] 

BBSˮľÇ廪վ¡Ã¾«»ªÇø