a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > Perl > 正文

Perl信號處理學習簡單小結

2020-10-31 15:05:43
字體:
來源:轉載
供稿:網友

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。錯誤碼被保存在$@中。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 性国产xxxx乳高跟 | 国产精品欧美一区二区 | 国精产品一区一区三区免费完 | 亚洲一二三区不卡 | 欧美日韩黄色一区二区 | 亚洲免费片 | 91精品久久久久久 | 亚洲精品久久久久久久久久久 | 精品国产一区二区在线 | 久久精品网 | 国产午夜精品一区二区三区视频 | 亚洲福利电影网 | 亚洲性免费视频 | 欧美性猛交一区二区三区精品 | 国产精品久久嫩一区二区免费 | 欧美成人精品一区二区男人看 | 91网站在线播放 | 日韩欧美一区二区三区久久婷婷 | 少妇淫片aaaaa毛片叫床爽 | 精品国产一区二区三区性色av | 亚洲国产精品一区二区三区 | 日本一区二区成人 | 欧洲另类二三四区 | 91精品久久久久久久久久入口 | 天堂成人av | 日本一区二区三区精品视频 | 成人欧美一区二区三区黑人孕妇 | 日韩精品一区二区视频 | 午夜私人影院 | 黄色a视频 | 亚洲成av人片在线观看 | 国产精品一级毛片在线 | 国产免费黄网站 | 久久蜜桃视频 | 国产成人精品一区二区在线 | 欧美视频h | 亚洲国产精品一区二区久久 | 亚洲成人一二区 | 欧美视频一区二区三区在线观看 | 日本精品视频在线播放 | 99久久婷婷国产精品综合 |