Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > b611ea73723a8287cce23d3124a6eeea > files > 319

howto-sgml-ko-2006-5mdv2010.0.noarch.rpm

#!/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