Perl信号处理学习简单小结

所属分类: 脚本专栏 / perl 阅读数: 1946
收藏 0 赞 0 分享

Unix 下常见的处理信号

复制代码 代码如下:

No    Name         Default Action       Description
 1     SIGHUP       terminate process    terminal line hangup
 2     SIGINT       terminate process    interrupt program
 3     SIGQUIT      create core image    quit program
 4     SIGILL       create core image    illegal instruction
 5     SIGTRAP      create core image    trace trap
 6     SIGABRT      create core image    abort program (formerly SIGIOT)
 7     SIGEMT       create core image    emulate instruction executed
 8     SIGFPE       create core image    floating-point exception
 9     SIGKILL      terminate process    kill program
 10    SIGBUS       create core image    bus error
 11    SIGSEGV      create core image    segmentation violation
 12    SIGSYS       create core image    non-existent system call invoked
 13    SIGPIPE      terminate process    write on a pipe with no reader
 14    SIGALRM      terminate process    real-time timer expired
 15    SIGTERM      terminate process    software termination signal
 16    SIGURG       discard signal       urgent condition present on socket
 17    SIGSTOP      stop process         stop (cannot be caught or ignored)
 18    SIGTSTP      stop process         stop signal generated from keyboard
 19    SIGCONT      discard signal       continue after stop
 20    SIGCHLD      discard signal       child status has changed
 21    SIGTTIN      stop process         background read attempted from control terminal
 22    SIGTTOU      stop process         background write attempted to control terminal
 23    SIGIO        discard signal       I/O is possible on a descriptor (see fcntl(2))
 24    SIGXCPU      terminate process    cpu time limit exceeded (see setrlimit(2))
 25    SIGXFSZ      terminate process    file size limit exceeded (see setrlimit(2))
 26    SIGVTALRM    terminate process    virtual time alarm (see setitimer(2))
 27    SIGPROF      terminate process    profiling timer alarm (see setitimer(2))
 28    SIGWINCH     discard signal       Window size change
 29    SIGINFO      discard signal       status request from keyboard
 30    SIGUSR1      terminate process    User defined signal 1
 31    SIGUSR2      terminate process    User defined signal 2

perl的信号处理原理

Perl 提供了%SIG 这个特殊的默认HASH.调用需要使用到系统保留全局HASH数组%SIG,即使 用'$SIG{信号名}'截取信号,相当于,在perl程序中出现这个信号时,执行我们自己定义某段代码(子函数)的地址值(定义信号响应函数),这代码就是截取这个信息后要执行的结果了.

举个SIGALRM例子,也就是超时处理:

复制代码 代码如下:

my $timeout = 10 ;
    eval {
        local $SIG{ALRM} = sub { die "alarm\n" }; # \n required
        alarm $timeout; #如果到了$timeout时间就会去执行上面的sub
        sleep 15;
        print " if timeout ,this will not print";
        alarm 0; #恢复到默认的状态
    };
    if ($@) {
        die  unless $@ eq "alarm\n";   #可能捕获的不是超时,是其他错误,就die吧
        print "timeout \n" ;
    }
    else {
        print "not timeout";
    }

这里要说一下perl的错误捕获机制

复制代码 代码如下:

eval {
open(FH,”domains.txt”) or die “Can't open files,$!”;
};

捕获异常
复制代码 代码如下:

if($@){#出现异常}
else{#无异常,打印文件内容
while(){

}
close FH;
}

如果eval块中的程序有语法错误、运行时错误或者遇到die语句,eval将返回undef。错误码被保存在$@中。

更多精彩内容其他人还在看

perl后门,正向和反向!实例代码

写过很多关于Perl编程,今天继续分享一篇利用perl后门实现正向和反向连接的实例代码,需要的朋友可以参考下其中的内容详情
收藏 0 赞 0 分享

Perl模块编写说明

这两天在用Perl编写一些监控脚本,其实写代码也是一件挺有意思的事情,就是挺废时间的。而且,由于语法不太熟,基本想到一个东西都要先Google一下看怎么实现。
收藏 0 赞 0 分享

用perl写的单位电脑信息采集程序

perl,后来我又改过了增加了一些交互和数据库检测的功能。主要用于收集ip、mac、姓名、房间,后来又加入了维修记录的功能。服务器端接受数据并存入数据库中。
收藏 0 赞 0 分享

冒充su ,perl写的su.pl盗取root密码

backtrack3里面/pentest/housekeeping里面有个超囧的偷root密码的东西,冒充su ,perl写的,管理员输入密码的时候还直接回显
收藏 0 赞 0 分享

perl中5个常见错误

php是用了很久了,python和ruby与用过,经典脚本语言就perl没摸过,现在在像小学生一样抱着教科书啃。
收藏 0 赞 0 分享

perl 中文处理技巧

perl对中文的处理(encode,decode) 最近在处理中文时遇到乱码的问题,google了一下,发现下面这篇文章。茅塞顿开!
收藏 0 赞 0 分享

perl 学习资料整理篇第1/4页

比较多也乱了点,大家先看看吧
收藏 0 赞 0 分享

只有一行的Perl程序第1/3页

今天来说说perl,只有一行的perl程序。
收藏 0 赞 0 分享

关于Perl里面正则表达式规范

关于Perl正则的一些规范,很多妙用。
收藏 0 赞 0 分享

Perl 获取shell命令的执行结果

Perl里可以调用Shell命令,有时需要根据shell命令的返回结果做进一步的工作,如何获得shell的执行结果?
收藏 0 赞 0 分享
查看更多