訊號是由作業系統傳給程序的中斷,會提早終止乙個程式。在
unix
、linux
、mac os x
或windows
系統上,可以通過按
ctrl+c
產生中斷。
有些訊號不能被程式捕獲,但是下表所列訊號可以在程式中捕獲,並可以基於訊號採取適當的動作。這些訊號是定義在
c++
標頭檔案中。
訊號
描述
sigabrt
程式的異常終止,如呼叫abort。
sigfpe
錯誤的算術運算,比如除以零或導致溢位的操作。
sigill
檢測非法指令。
sigint
接收到互動注意訊號。
sigsegv
非法訪問記憶體。
sigterm
傳送到程式的終止請求。
signal()
函式
c++
訊號處理庫提供了
signal
函式,用來捕獲突發事件。以下是
signal()
函式的語法:
void
(*signal (
int sig,
void
(*func)(
int)))(
int);
這個函式接收兩個引數:第乙個引數是乙個整數,代表了訊號的編號;第二個引數是乙個指向訊號處理函式的指標。
讓我們編寫乙個簡單的
c++
程式,使用
signal()
函式捕獲
sigint
訊號。不管您想在程式中捕獲什麼訊號,您都必須使用signal
例項
#include <
iostream
>#include <
csignal
>
usingnamespacestd
; voidsignalhandler
(intsignum
)intmain
()return0;
} 當上面的**被編譯和執行時,它會產生下列結果:
going to sleep....
going to sleep....
going to sleep....
現在,按
ctrl+c
來中斷程式,您會看到程式捕獲訊號,程式列印如下內容並退出:
going to sleep....
going to sleep....
going to sleep....
interrupt signal (
2) received.
raise()
函式
您可以使用函式
raise()
生成訊號,該函式帶有乙個整數訊號編號作為引數,語法如下:
intraise
(signal sig);
在這裡,sig
是要傳送的訊號的編號,這些訊號包括:
sigint
、sigabrt
、sigfpe
、sigill
、sigsegv
、sigterm
、sighup
。以下是我們使用
raise()
函式內部生成訊號的例項:
例項
#include <
iostream
>#include <
csignal
>
usingnamespacestd
; voidsignalhandler
(intsignum
)intmain
()sleep(1
); }return0;
} 當上面的**被編譯和執行時,它會產生下列結果,並會自動退出:
going to sleep....
going to sleep....
going to sleep....
interrupt signal (
2) received.
www.tiqianzd.com
乙個用c 寫的掃瞄asp原始碼漏洞的應用程式 2
主要方法 protected void btngo click object sender,system.eventargs e 定義分割符為 char line 定義分割符為 string arrstring strurl.split line 求asp檔案全名 string strfilenam...
乙個用c 寫的掃瞄asp原始碼漏洞的應用程式 續
主要方法 protected void btngo click object sender,system.eventargs e 定義分割符為 char line 定義分割符為 string arrstring strurl.split line 求asp檔案全名 string strfilenam...
乙個用c 寫的掃瞄asp原始碼漏洞的應用程式 續
主要方法 protected void btngo click object sender,system.eventargs e 定義分割符為 char line 定義分割符為 string arrstring strurl.split line 求asp檔案全名 string strfilenam...