Chinaunix首页 | 论坛 | 博客
  • 博客访问: 239351
  • 博文数量: 91
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 955
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-12 09:38
文章分类

全部博文(91)

文章存档

2017年(1)

2011年(1)

2008年(15)

2007年(74)

我的朋友

分类: LINUX

2007-08-25 10:46:18

在UNIX里,可能发生的第一种类型的事件都是由一个独立的信号来描述。每个信号都是一个小的正整数。信号0,实际上是shell中的一个惯例,而不是一个真正的信号。当shell脚本退出时,不管是使用exit还是执行完脚本里面的最后一条命令面退出,shell都会给自己发信号0来表明脚本执行完成并且应该终止.
查看系统所支持的所有信号(version redhat 9.0)
 $kill -l
 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE
 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2
13) SIGPIPE 14) SIGALRM 15) SIGTERM 17) SIGCHLD
18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN
22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO
30) SIGPWR 31) SIGSYS 33) SIGRTMIN 34) SIGRTMIN+1
35) SIGRTMIN+2 36) SIGRTMIN+3 37) SIGRTMIN+4 38) SIGRTMIN+5
39) SIGRTMIN+6 40) SIGRTMIN+7 41) SIGRTMIN+8 42) SIGRTMIN+9
43) SIGRTMIN+10 44) SIGRTMIN+11 45) SIGRTMIN+12 46) SIGRTMIN+13
47) SIGRTMIN+14 48) SIGRTMIN+15 49) SIGRTMAX-14 50) SIGRTMAX-13
51) SIGRTMAX-12 52) SIGRTMAX-11 53) SIGRTMAX-10 54) SIGRTMAX-9
55) SIGRTMAX-8 56) SIGRTMAX-7 57) SIGRTMAX-6 58) SIGRTMAX-5
59) SIGRTMAX-4 60) SIGRTMAX-3 61) SIGRTMAX-2 62) SIGRTMAX-1
63) SIGRTMAX

  用stty -a可以列出中断信号与键盘的对应
  
信号发送
  example:
  $kill pid
  向进程pid发送结束信号
  
信号处理
  有以下三种方式
  1.不做任何动作
  2.忽略信号,并继续执行
  3.捕捉该信号并执行与信号相关的一些命令。
 trap命令
  用来设置和清除接收到信号时采取的动作
  syntax:
   trap name signs
   这name既可是命令列表,也可是要执行的shell函数的名称。signs是要处理的信号的列表
   常见的用处是
   清除临时文件
   一直忽略信号
   在关键操作阶段忽略信号
   
清除临时文件
  如果脚本创建了临时文件,正常情况下,大多数脚本都能完成清除工作,但有信号的情况下,很少有脚本能完成清除工作。
  如:trap Cleanup 2 15
  当接收到信号SIGINT或SIGTERM时脚本调用Cleanup例程
 
 忽略信号
  有两种方式
  trap '' sigs
  trap : sigs
  第一种方式,是传递一个空参数,trap 将它理解为忽略
  第二种方式,指定要执行的命令是:,它是空操作命令,两种效果是一样的,使用任何一种都可以。
   如:使用这样的语句可以使这些中断信号被忽略:
   trap " " 1 2 3 24 或 trap "" HUP INT QUIT TSTP
   上面列出了多个信号,它们表示或而不是与

阅读(798) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~