trapÀ» ÀÌ¿ëÇÑ signal ó¸®
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.

signalÀº unix¿î¿µÃ¼Á¦¿¡¼­ ºñµ¿±âÀûÀÎ »ç°ÇÀ» Àü¼ÛÇϱâ À§Çؼ­ »ç¿ëÇÏ´Â ¼³ºñ´Ù. ºñµ¿±âÀûÀÎ »ç°ÇÀ̶õ ¾ðÁ¦ ¹ß»ýÇÒÁö ¿¹ÃøÇÒ ¼ö ¾ø´Â »ç°ÇÀ¸·Î Å͹̳ΠÁ¾·á, ¸Þ¸ð¸® ħ¹ü, ¾Ë¶÷, ÀåÄ¡·Î ºÎÅÍÀÇ ÀԷµîÀÇ »ç°ÇÀÌ ÀÌ¿¡ ÇØ´çÇÑ´Ù. À¯´Ð½º ½Ã½ºÅÛÀº ÀÌ·¯ÇÑ ½Ã±×³ÎÀÇ Ã³¸®°¡ °¡´ÉÇϵµ·Ï signalÁ¦¾î¿ë C ÇÔ¼öµéÀ» Á¦°øÇÑ´Ù. ±×·¯³ª À̵é C ÀÎÅÍÆäÀ̽º ÇÔ¼ö´Â °£´ÜÇÑÀÏÀ» ó¸®Çϱ⿡´Â Á» ºÎ´ã½º·¯¿î°Ô »ç½ÇÀÌ´Ù. ¿©±â¿¡ trapÀ» ÀÌ¿ëÇØ¼­ shell ½ºÅ©¸³Æ®·Î À̺¥Æ®¸¦ ó¸®ÇÏ´Â ¹æ¹ýÀ» ¼Ò°³ÇϰíÀÚ ÇÑ´Ù.

½Ã±×³ÎÀº ÇÁ·Î¼¼½º¿¡ Á¾¼ÓÀûÀ¸·Î, ÇØ´ç ÇÁ·Î¼¼½ºº°·Î ¹Þ¾ÆµéÀ̰ųª ¹«½ÃÇÏ´Â ½Ã±×³ÎÀÌ Á¤ÀǵȴÙ. ±×·¯¹Ç·Î shell »ó¿¡¼­ À̺¥Æ®¸¦ ó¸®ÇÏ´Â ½ºÅ©¸³Æ®¸¦ ÀÛ¼ºÇÏ·Á¸é, shell ¿¡¼­ ¹Þ¾ÆµéÀÌ´Â ½Ã±×³ÎÀÇ Á¾·ù¿¡ ´ëÇØ¼­ ¾Ë¾Æº¼ Çʿ䰡 ÀÖ´Ù. ´ÙÀ½Àº ½©¿¡¼­ ¹Þ¾Æµé¿©¼­ ó¸®ÇÒ ¼ö ÀÖ´Â ½Ã±×³ÎÀÇ Á¾·ùµéÀÌ´Ù.

½Ã±×³Î ¹øÈ£ ½Ã±×³Î À̸§ ¼³¸í
0 EXIT ½©ÀÇ Á¾·á
1 HUP Å͹̳ÎÀÌ Á¾·áµÇ¾úÀ» ¶§ ¹ß»ýÇÏ´Â ½Ã±×³Î
2 INT Del ۸¦ ´­·¶À» ¶§ ¹ß»ýµÇ´Â ½Ã±×³Î·Î ÇöÀç ÇÁ·Î±×·¥ÀÇ Áß´ÜÀ» ÀǹÌÇÑ´Ù.
3 QUIT Ctrl + \ ۸¦ ´©¸£¸é ¹ß»ýµÇ´Â ½Ã±×³Î·Î ÇöÀç ÇÁ·Î±×·¥À» Á¾·á½ÃŲ´Ù.
9 KILL ÇÁ·Î±×·¥À» °­Á¦·Î Á¾·á½Ã۱â À§Çؼ­ º¸³»´Â ½Ã±×³Î·Î ¹«½ÃÇϰųª ÃßÀûÇØ¼­ ó¸®ÇÒ ¼ö ¾ø´Ù.
11 SEGV segmentation violation ¿¡ ¹ß»ýµÇ´Â ½Ã±×³ÎÀÌ´Ù. À¯´Ð½º´Â ÇÁ·Î¼¼½º°¡ »ç¿ëÇÏ´Â ¸Þ¸ð¸® ¿µ¿ªÀ» º¸È£Çϴµ¥, ´Ù¸¥ ÇÁ·Î¼¼½º°¡ »ç¿ëÇÏ´Â ¸Þ¸ð¸® ¿µ¿ªÀ» ħ¹üÇÏ·Á°í ÇÒ¶§ ÁÖ·Î ¹ß»ýÇÑ´Ù
15 TERM ÀÌ ½Ã±×³ÎÀ» ¹ÞÀº ÇÁ·Î¼¼½º´Â Á¾·á°¡ µÈ´Ù. ±âº»ÀûÀÎ µ¿ÀÛÀº KILL °ú °°Áö¸¸ KILL °ú´Â ´Ù¸£°Ô ¹«½ÃÇÒ ¼öµµ ÀÖ°í, ÃßÀûÇØ¼­ ó¸®ÇÒ ¼öµµ ÀÖ´Ù.

½Ã±×³Î¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº signal ¹®¼­¸¦ Âü°íÇϱ⠹ٶõ´Ù.

trap(1)¸í·É¾î¸¦ ÀÌ¿ëÇÏ¸é ½©¿¡¼­ ¹ß»ýÇÏ´Â ½Ã±×³ÎÀ» ó¸®ÇÏ´Â ÇÁ·Î±×·¥À» ¸¸µé ¼ö ÀÖ´Ù. trap(1)ÀÇ »ç¿ë¹ýÀº ´ÙÀ½°ú °°´Ù.
trap command signals_list 
 

´ÙÀ½Àº INT½Ã±×³ÎÀÌ ¹ß»ýÇÒ °æ¿ì rm test.txt¸¦ Áö¿ì´Â ½©½ºÅ©¸³Æ®´Ù.
# trap "rm test.txt" 2 
# echo $$ 
38500 
 
$$´Â ½©ÀÇ PID °ªÀ» ÀúÀåÇϰí Àִ Ư¼öº¯¼ö´Ù. ÀÌÁ¦ ´Ù¸¥ ½©À» ¶ç¿ö¼­ 38500 ¿¡ INT ½Ã±×³ÎÀ» Àü¼ÛÇØº¸ÀÚ.
# kill -INT 38500 
 
±×·³ trapÀ» ½ÇÇàÇÑ ½©¿¡¼­ rm test.txt¸í·ÉÀÌ ½ÇÇàµÇ´Â°É È®ÀÎÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.
# rm: remove regular empty file `test.txt'? 
 
y/n À» ¹°¾îº¸´Â ÇÁ·ÒÇÁÆ®°¡ ¶ßÁö ¾Ê°í ¹Ù·Î ÆÄÀÏÀ» »èÁ¦½ÃŰ·Á¸é rm¿¡ -f ¿É¼ÇÀ» ÁÖ¸é µÈ´Ù.

´ÙÀ½Àº ALRM½Ã±×³ÎÀÌ ¹ß»ýÇÒ ¶§ ¸¶´Ù ½©ÀÇ HISTORY º¯¼ö À̸§À» °¡Áö´Â ÆÄÀÏÀ» ƯÁ¤ÆÄÀÏ¿¡ ÀúÀåÇÏ´Â ÀÏÀ» ÇÏ´Â ½ºÅ©¸³Æ®´Ù. ·Î±×ÀÎÇÑ »ç¿ëÀÚ°¡ ÀÌÀü¿¡ ¾î¶² ÀÛ¾÷À» Çß´ÂÁö ±× ³»¿ëÀ» ³²±â°íÀÚ ÇÒ¶§ À¯¿ëÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.
# trap 'cp $HISTFILE $HOME/old_hist.bak; exit' ALRM 
 

À̱ÛÀº joinc ºí·Î±×·Î ¹ßÇàµÇ¾ú½À´Ï´Ù. ´ñ±ÛÀº ºí·Î±×¿¡¼­ ÀÔ·ÂÇÒ ¼ö ÀÖ½À´Ï´Ù.

EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.