热门问题
时间线
聊天
视角

SIGSEGV

来自维基百科,自由的百科全书

Remove ads

POSIX相容的平台上,SIGSEGV是當一個行程執行了一個無效的主記憶體參照,或發生區段錯誤時傳送給它的訊號。SIGSEGV的符號常數標頭檔signal.h中定義。因為在不同平台上,訊號數字可能變化,因此符號訊號名被使用。通常[原創研究?],它是訊號#11。[1]

快速預覽 描述, 預設動作 ...

語源

SIG是訊號名的通用字首SEGVsegmentation violation(區段違例)的縮寫

使用

對於不正確的主記憶體處理(見區段錯誤),電腦程式可能丟擲SIGSEGV。作業系統可能使用訊號堆疊向一個處於自然狀態的應用程式通告錯誤,由此,開發者可以使用它來除錯程式或處理錯誤。

在一個程式接收到SIGSEGV時的預設動作是異常終止。這個動作也許會結束行程,但是可能生成一個核心檔案以幫助除錯,或者執行一些其他特定於某些平台的動作。例如,使用了grsecurity修補程式的Linux系統可能記錄SIGSEGV訊號以監視可能的使用緩衝區溢位的攻擊嘗試。

SIGSEGV可以被擷取。也就是說,應用程式可以請求它們想要的動作,以替代預設發生的動作。這樣的動作可以是忽略它、呼叫一個函式,或恢復預設的動作。在一些情形下,忽略SIGSEGV導致未定義行為[2]

一個應用程式可能處理SIGSEGV的例子是除錯器,它可能檢查訊號堆疊並通知開發者目前所發生的,以及程式終止的位置。

SIGSEGV通常由作業系統生成,但是有適當權限的使用者可以在需要時使用kill系統呼叫kill命令(一個使用者級程式,或者一個shell內建命令)來向一個行程傳送訊號。

Remove ads

參考

外部連結

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads