Perl信號處理學(xué)習(xí)簡單小結(jié)
來源:易賢網(wǎng) 閱讀:955 次 日期:2014-09-25 11:59:19
溫馨提示:易賢網(wǎng)小編為您整理了“Perl信號處理學(xué)習(xí)簡單小結(jié)”,方便廣大網(wǎng)友查閱!

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

舉個SIGALRM例子,也就是超時處理:

代碼如下:

my $timeout = 10 ;

eval {

local $SIG{ALRM} = sub { die "alarm\n" }; # \n required

alarm $timeout; #如果到了$timeout時間就會去執(zhí)行上面的sub

sleep 15;

print " if timeout ,this will not print";

alarm 0; #恢復(fù)到默認的狀態(tài)

};

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($@){#出現(xiàn)異常}

else{#無異常,打印文件內(nèi)容

while(){

}

close FH;

}

如果eval塊中的程序有語法錯誤、運行時錯誤或者遇到die語句,eval將返回undef。錯誤碼被保存在$@中。

更多信息請查看IT技術(shù)專欄

更多信息請查看腳本欄目
易賢網(wǎng)手機網(wǎng)站地址:Perl信號處理學(xué)習(xí)簡單小結(jié)
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

2025國考·省考課程試聽報名

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 加入群交流 | 手機站點 | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
咨詢QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報警專用圖標(biāo)