linux进程信号捕获及删除捕获

trap命令可以对信号进行捕获,命令格式如下:

trap command singal

第二个参数是信号名称,第一个参数是遇到信号singal执行的命令。

删除信号捕获,命令格式

trap -- singal
[root@localhost shell]# cat test.sh 
#!/bin/bash
trap "echo 'Sorry,Ctrl-C is trapped.'" SIGINT
count=1
while [ $count -le 5 ]
do
	echo "Loop #$count"
	sleep 1
	count=$[ $count + 1 ]
done

trap -- SIGINT
echo "I just removed the trap"

count=1
while [ $count -le 5 ]
do
	echo "Second Loop #$count"
	sleep 1
	count=$[ $count + 1 ]
done

运行情况如下:

[root@localhost shell]# ./test.sh 
Loop #1
Loop #2
Loop #3
Loop #4
^CSorry,Ctrl-C is trapped.
Loop #5
I just removed the trap
Second Loop #1
Second Loop #2
^C

在第一个循环中按ctrl+C会执行捕获的命令,由于信号是在捕获被移除前接收到的,那么脚本会按照原先trap命令中的设置进行处理。

你可能感兴趣的:(linux)