perl信號(hào)處理學(xué)習(xí)簡(jiǎn)單小結(jié)
來(lái)源:易賢網(wǎng) 閱讀:885 次 日期:2016-06-30 09:42:25
溫馨提示:易賢網(wǎng)小編為您整理了“perl信號(hào)處理學(xué)習(xí)簡(jiǎn)單小結(jié)”,方便廣大網(wǎng)友查閱!

unix 下常見(jiàn)的處理信號(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;

}

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

代碼如下:

eval {

open(fh,”domains.txt”) or die “can't open files,$!”;

};

捕獲異常

代碼如下:

if($@){#出現(xiàn)異常}

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

while(){

}

close fh;

}

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

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

2025國(guó)考·省考課程試聽(tīng)報(bào)名

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