linux 信号处理

shell中trap捕捉到信号的处理
查看信息号
trap -l
kill -l
man 7 signal

一、三种处理方式
1、执行一段程序来处理这一信号
 trap 'commands' signal-list
 trap "commands" signal-list
2、接受信号的默认操作
trap signal-list
3、忽视这一信号
trap " " signal-list

注意: 11信号不能步骤,因为shell本身需要捕捉该信号去进行内存的转储
在trap中可以定义对信号0的处理(实际上没有这个信号), shell程序在其终止(如执行exit语句)时发出该信号
在捕捉到signal-list中指定的信号并执行完相应的命令之后, 如果这些命令没有将shell程序终止的话,shell程序将继续执行收到信号时所执行的命令后面的命令,这样将很容易导致shell程序无法终止。
另外,在trap语句中,单引号和双引号是不同的,当shell程序第一次碰到trap语句时,将把commands中的命令扫描一遍。此时若commands是用单引号括起来的话,那么shell不会对commands中的变量和命令进行替换, 否则commands中的变量和命令将用当时具体的值来

脚本中使用信号

#!/bin/bash
2 trap 'echo sdf sdfINT' INT
3 trap 'echo sdfsdQUIT' QUIT
4 trap 'echo sdfsdf TSP' TSTP
5
6 echo "Enter your prompt"
7 while true
8
9 do
10 echo -n 'Go ahead ...>'
11 read
12 if [[ $reply==[sS]top ]]
13 then
14 break
15 fi
16 done

posted @ 2017-08-27 22:42  姚果果  阅读(104)  评论(0编辑  收藏  举报