SIGSEGV

SIGSEGV

在POSIX兼容的平台上,SIGSEGV是當一個進程執行了一個無效的記憶體引用,或發生段錯誤時傳送給它的信號。SIGSEGV的符號常量在頭檔案signal.h中定義。因為在不同平台上,信號數字可能變化,因此符號信號名被使用。通常,它是信號#11。

基本介紹

  • 中文名:SIGSEGV
  • 外文名:segmentationviolation
  • 性質:符號常量
  • 類型:計算機術語
簡介,語源,使用,

簡介

在POSIX兼容的平台上,SIGSEGV是當一個進程執行了一個無效的記憶體引用,或發生段錯誤時傳送給它的信號。SIGSEGV的符號常量在頭檔案signal.h中定義。因為在不同平台上,信號數字可能變化,因此符號信號名被使用。通常,它是信號#11。

語源

SIG是信號名的通用前綴。SEGVsegmentationviolation(段違例)的縮寫。

使用

對於不正確的記憶體處理,電腦程式可能拋出SIGSEGV。作業系統可能使用信號棧向一個處於自然狀態的應用程式通告錯誤,由此,開發者可以使用它來調試程式或處理錯誤。
在一個程式接收到SIGSEGV時的默認動作是異常終止。這個動作也許會結束進程,但是可能生成一個核心檔案以幫助調試,或者執行一些其他特定於某些平台的動作。例如,使用了grsecurity補丁的Linux系統可能記錄SIGSEGV信號以監視可能的使用快取溢出的攻擊嘗試。
SIGSEGV可以被捕獲。也就是說,應用程式可以請求它們想要的動作,以替代默認發生的動作。這樣的動作可以是忽略它、調用一個函式,或恢復默認的動作。在一些情形下,忽略SIGSEGV導致未定義的行為。
一個應用程式可能處理SIGSEGV的例子是調試器,它可能檢查信號棧並通知開發者目前所發生的,以及程式終止的位置。
SIGSEGV通常由作業系統生成,但是有適當許可權的用戶可以在需要時使用kill系統調用或kill命令(一個用戶級程式,或者一個shell內建命令)來向一個進程傳送信號。

相關詞條

熱門詞條

聯絡我們