佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > Perl信號(hào)處理學(xué)習(xí)簡(jiǎn)單小結(jié)

Perl信號(hào)處理學(xué)習(xí)簡(jiǎn)單小結(jié)

熱門(mén)標(biāo)簽:語(yǔ)音系統(tǒng) 電話(huà)運(yùn)營(yíng)中心 百度AI接口 Win7旗艦版 呼叫中心市場(chǎng)需求 企業(yè)做大做強(qiáng) 客戶(hù)服務(wù) 硅谷的囚徒呼叫中心

Unix 下常見(jiàn)的處理信號(hào)

復(fù)制代碼 代碼如下:

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的信號(hào)處理原理

Perl 提供了%SIG 這個(gè)特殊的默認(rèn)HASH.調(diào)用需要使用到系統(tǒng)保留全局HASH數(shù)組%SIG,即使 用'$SIG{信號(hào)名}'截取信號(hào),相當(dāng)于,在perl程序中出現(xiàn)這個(gè)信號(hào)時(shí),執(zhí)行我們自己定義某段代碼(子函數(shù))的地址值(定義信號(hào)響應(yīng)函數(shù)),這代碼就是截取這個(gè)信息后要執(zhí)行的結(jié)果了.

舉個(gè)SIGALRM例子,也就是超時(shí)處理:

復(fù)制代碼 代碼如下:

my $timeout = 10 ;
    eval {
        local $SIG{ALRM} = sub { die "alarm\n" }; # \n required
        alarm $timeout; #如果到了$timeout時(shí)間就會(huì)去執(zhí)行上面的sub
        sleep 15;
        print " if timeout ,this will not print";
        alarm 0; #恢復(fù)到默認(rèn)的狀態(tài)
    };
    if ($@) {
        die  unless $@ eq "alarm\n";   #可能捕獲的不是超時(shí),是其他錯(cuò)誤,就die吧
        print "timeout \n" ;
    }
    else {
        print "not timeout";
    }

這里要說(shuō)一下perl的錯(cuò)誤捕獲機(jī)制

復(fù)制代碼 代碼如下:

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

捕獲異常
復(fù)制代碼 代碼如下:

if($@){#出現(xiàn)異常}
else{#無(wú)異常,打印文件內(nèi)容
while(){

}
close FH;
}

如果eval塊中的程序有語(yǔ)法錯(cuò)誤、運(yùn)行時(shí)錯(cuò)誤或者遇到die語(yǔ)句,eval將返回undef。錯(cuò)誤碼被保存在$@中。

您可能感興趣的文章:
  • php 中的信號(hào)處理操作實(shí)例詳解
  • python多線程下信號(hào)處理程序示例
  • PHP信號(hào)處理機(jī)制的操作代碼講解
  • 對(duì)Python信號(hào)處理模塊signal詳解
  • Golang信號(hào)處理及如何實(shí)現(xiàn)進(jìn)程的優(yōu)雅退出詳解
  • 詳細(xì)分析C++ 信號(hào)處理

標(biāo)簽:安康 山西 崇左 海南 長(zhǎng)沙 濟(jì)南 山西 喀什

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Perl信號(hào)處理學(xué)習(xí)簡(jiǎn)單小結(jié)》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話(huà)咨詢(xún)

    • 400-1100-266
    临高县| 潞西市| 五常市| 湟中县| 云龙县| 神木县| 南充市| 临安市| 南靖县| 五峰| 武平县| 芒康县| 英超| 顺平县| 茶陵县| 屯留县| 澳门| 大方县| 右玉县| 盘山县| 兴隆县| 望奎县| 新巴尔虎左旗| 婺源县| 德惠市| 沽源县| 六枝特区| 信丰县| 昌吉市| 顺昌县| 兴海县| 厦门市| 宜兰市| 湾仔区| 五大连池市| 民和| 保康县| 寻甸| 徐州市| 蚌埠市| 嫩江县|