#!/bin/bash # timed-input.sh # TMOUT=3 ½ºÅ©¸³Æ®¿¡¼´Â ¾µ¸ð°¡ ¾ø½À´Ï´Ù. TIMELIMIT=3 # ¿©±â¼´Â 3ÃÊ, ´Ù¸¥ °ªÀ¸·Î ¼¼Æ®ÇÒ ¼ö ÀÖ½À´Ï´Ù. PrintAnswer() { if [ "$answer" = TIMEOUT ] then echo $answer else # µÎ ¹øÀÇ ÀνºÅϽº¸¦ ±¸ºÐÇϱâ À§Çؼ. echo "Á¦ÀÏ ÁÁ¾ÆÇÏ´Â ¾ßä´Â $answer À̱º¿ä." kill $! # ¹é±×¶ó¿îµå¿¡¼ µµ´Â TimerOn ÇÔ¼ö°¡ ´õ ÀÌ»ó ÇÊ¿ä¾ø±â ¶§¹®¿¡ kill ½ÃÅ´. # $! ´Â ¹é±×¶ó¿îµå¿¡¼ µ¹°í ÀÖ´Â °¡Àå ÃÖ±Ù ÀÛ¾÷ÀÇ PID ÀÔ´Ï´Ù. fi } TimerOn() { sleep $TIMELIMIT && kill -s 14 $$ & # 3Ãʸ¦ ±â´Ù¸®°í ¾Ë¶÷ ½Ã±×³Î(sigalarm)À» ½ºÅ©¸³Æ®¿¡ º¸³¿. } Int14Vector() { answer="TIMEOUT" PrintAnswer exit 14 } trap Int14Vector 14 # ŸÀÌ¸Ó ÀÎÅÍ·´Æ®(14)´Â ¿ì¸® Àǵµ´ë·Î ŸÀӾƿôÀ» ó¸®ÇÔ. echo "Á¦ÀÏ ÁÁ¾ÆÇÏ´Â ¾ßä°¡ ¹¹ÁÒ? " TimerOn read answer PrintAnswer # ÀÌ´Â ºÐ¸íÈ÷ ŸÀӾƿô ÀԷ¿¡ ´ëÇÑ ¹ÌºÀÃ¥ÀÔ´Ï´Ù¸¸, # Bash ·Î ÇÒ ¼ö ÀÖ´Â ÃÖ¼±À» ´ÙÇÑ °ÍÀÔ´Ï´Ù. # (µ¶Àڵ鿡°Ô µµÀü: ´õ ³ªÀº ÇØ°áÃ¥À» Á¦½ÃÇØ º¸¼¼¿ä.) # ´õ ¿ì¾ÆÇÑ ´Ù¸¥ °ÍÀÌ ÇÊ¿äÇÏ´Ù¸é C ³ª C++ ÀÇ 'alarm'À̳ª 'setitimer' °°Àº # Àû´çÇÑ ¶óÀ̺귯¸® ÇÔ¼ö¸¦ ½á¼ ±¸ÇöÇϱ⠹ٶø´Ï´Ù. exit 0