Chinaunix首页 | 论坛 | 博客
  • 博客访问: 383053
  • 博文数量: 146
  • 博客积分: 7142
  • 博客等级: 少将
  • 技术积分: 975
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-03 09:43
文章分类

全部博文(146)

文章存档

2012年(1)

2011年(5)

2010年(24)

2009年(116)

我的朋友

分类: LINUX

2009-12-27 19:05:28

################################Start
Script#######################################
   1 #!/bin/bash
   2 # timed-input.sh
   3 
   4 # TMOUT=3    在新版本的 Bash 上也能工作.
   5 
   6 
   7 TIMELIMIT=3  # 在这个例子上是 3 秒,也可以设其他的值.
   8 
   9 PrintAnswer()
  10 {
  11   if [ "$answer" = TIMEOUT ]
  12   then
  13     echo $answer
  14   else       # 别想混合着两个例子.
  15     echo "Your favorite veggie is $answer"
  16     kill $!  # kill将不再需要 TimerOn 函数运行在后台.
  17              # $! 是运行在后台的最后一个工作的 PID.
  18   fi
  19 
  20 }   21 
  22 
  23 
  24 TimerOn()
  25 {
    26      sleep $TIMELIMIT && kill -s 14 $$ &
  27   # 等待 3 秒,然后发送一个信号给脚本.
  28 }  
  29 
  30 Int14Vector()
  31 {
  32   answer="TIMEOUT"
33   PrintAnswer
  34   exit 14
  35 }  
  36 
  37 trap Int14Vector 14   # 为了我们的目的,时间中断(14)被破坏了.
  38 
    39 echo "What is your favorite vegetable "
  40 TimerOn
  41 read answer
  42 PrintAnswer
  43 
  44 
  45 #  很明显的,这是一个拼凑的实现.
  46 #+ 然而使用"-t"选项来"read"的话,将会简化这个任务.
  47 #  见"t-out.sh",在下边.
  48 
  49 #  如果你需要一个真正的幽雅的写法...
  50 #+ 建议你使用 c/c++来写这个应用,
  51 #+ 使用合适的库来完成这个任务,比如'alarm'和'setitimer'.
  52 
  53 exit 0
################################End
Script#########################################
 
阅读(1406) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~