国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Perl > 正文

總結(jié)處理Perl信號(hào)的學(xué)習(xí)方法

2020-02-23 19:45:35
字體:
供稿:網(wǎng)友

程序腳本總是遇到這樣那樣的問題,我們預(yù)測(cè)了一些問題,并為它們處理代碼做準(zhǔn)備,而有些問題是不可預(yù)測(cè)的,今天就讓武林技術(shù)頻道小編帶大家進(jìn)入下文總結(jié)處理Perl信號(hào)的學(xué)習(xí)方法。

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

?

?

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í)處理:

?

?

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";
??? }

?

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

?

?

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


捕獲異常

?

?

?


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

}
close FH;
}

以上就是關(guān)于總結(jié)處理Perl信號(hào)的學(xué)習(xí)方法介紹。今天的分享就到這兒了,希望想學(xué)習(xí)的朋友。通過上面的學(xué)習(xí)希望可以幫助到大家,同時(shí)感謝大家對(duì)武林技術(shù)頻道的支持!

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 富川| 新化县| 遵义县| 蓬莱市| 合肥市| 峨眉山市| 同心县| 海城市| 醴陵市| 巩留县| 慈溪市| 麻江县| 铜梁县| 南丹县| 云霄县| 嘉兴市| 依兰县| 龙游县| 棋牌| 凤庆县| 淮北市| 张家界市| 财经| 平顶山市| 枣强县| 友谊县| 建湖县| 田阳县| 利津县| 吴堡县| 阿克陶县| 当涂县| 河间市| 大石桥市| 新营市| 仪陇县| 丰台区| 英吉沙县| 宜昌市| 永州市| 改则县|