perl与shell捕获中断信号的代码

发布时间:2020-12-22编辑:脚本学堂
perl与shell捕获中断信号的代码

先来看shell捕获中断信号的写法:
 

复制代码 代码如下:
#!/bin/bash
declare -i run_terminate=0
trap "run_terminate=1" SIGHUP SIGINT  //定义trap覆盖系统原有的SIGHUP和SIGINT信号,当你按下Ctrl+C时,run_terminate会被赋值为0
while [ ${run_terminate} == 0 ]
do
        echo "AAA"
done
echo "BBB"


你可以根据自己的需求去捕获其他按键发出的信号,并做出相应的处理。

再来看perl捕获中断信号的方法。
这里以中断信号INT为例(用户按下Ctrl + C),首先定义一个handler的子函数,用来执行当用户按下Ctrl+C后你想要程序执行的thing,其中%SIG散列变量复责为信号指定处理程序,把$SIG{'INT'}赋值为IGNORE时,程序会乎略Ctrl+C仍会继续允行,当赋值为DEFAULT时,恢复Ctrl+C的中断程序执行的作用!
 

复制代码 代码如下:
#!/usr/bin/perl -w
sub handler{
        local $sig = @_;
        print "Caught SIG $sig -- shutting down nown";
        exit(0);
}
$SIG{'INT'} = 'handler';
sleep 3;
print "Here I amn";