Can you summarize the following document?
        
  訊號處理函式可以通過codice_2系統呼叫來設定。如果沒有為一個訊號設定對應的處理函式,就會使用預設的處理函式,否則訊號就被程序截獲並呼叫相應的處理函式。在沒有處理函式的情況下,程式可以指定兩種行為:忽略這個訊號(SIG_IGN)或者用預設的處理函式(SIG_DFL)。但是有兩個訊號是無法被截獲並處理的:SIGKILL和SIGSTOP。

  因為競態條件的存在,訊號的處理是有弱點的。因為訊號是非同步的,所以在處理一個訊號的過程中,程序可能收到另一個訊號(甚至是相同的訊號)。codice_3系統呼叫可以用來阻塞和恢復訊號的傳遞。訊號可以造成程序中系統呼叫的中斷,並在訊號處理完後重新開始未完成的系統呼叫。訊號處理函式應該沒有任何不想要的副作用,比如,errno的改變、訊號掩碼的改變、訊號處理方法的改變,以及其他全域性程序性質的改變。在訊號處理函式內使用不可重入函式,如malloc和printf,也是不安全的。

  程序的執行也可能導致硬體異常,例如,將一個數除以零,或者出現TLB不命中。在類Unix系統中,這會自動執行核心的異常處理程式。對於某些異常如頁缺失,核心有足夠的資訊來處理完並恢復程序的執行。但是對於另外一些異常,核心不能處理而只能通過傳送訊號把異常交給程序自己處理。例如在x86架構的CPU上,如果一個程序嘗試將一個數除以零,將會產生"divide error"異常,並使核心向出錯的程序傳送SIGFPE訊號。相似地,如果一個程序嘗試訪問虛擬地址空間以外的記憶體,核心將向程序傳送SIGSEGV訊號。異常與訊號的具體對應關係在不同的CPU架構上是不同的。

  單一UNIX規範規定了在<signal.h>中定義的訊號有:  備註:打星號的部分表示這是X/Open System Interfaces (XSI)擴充的部分。使用引號的文字是引用自SUS。  傳送 SIGABRT 和 SIGIOT 訊號能告訴程式去放棄(abort),這也許是終止程式。當程式呼叫 C標準函式庫 的codice_4時,該訊號會被初始化,同時它也能被外部(如:其他訊號)所傳送至程式。  如果你用 setitimer 這一類的報警設定函式設定了一個時限,到達時限時程序會接收到 SIGALRM, SIGVTALRM 或者 SIGPROF。但是這三個訊號量的含義各有不同,SIGALRM 計時的是真實時間,SIGVTALRM計時的是程序使用了多少CPU時間,而 SIGPROF 計時的是程序和代表該程序的核心用了多少時間。 匯流排發生錯誤時,程序接收到一個SIGBUS訊號。舉例來說,儲存器訪問對齊或者或不存在對應的實體地址都會產生SIGBUS訊號。 當子程序終止、被中斷或被中斷後恢復時,SIGCHLD訊號被髮送到程序。該訊號的一個常見用法是指示作業系統在子程序終止後清理其使用的資源,而不顯式呼叫等待系統呼叫。 SIGCONT訊號指示作業系統繼續(重啟)先前由SIGSTOP或SIGTSTP訊號暫停的程序。Unix 殼的作業控制是該訊號的一個重要應用。 當程序執行了一個錯誤的算術運算時,例如被零除,訊號被髮送到一個程序。這可能包括整數被零除,以及整數在除結果中溢位(在C中只有INT_MIN/-1、INT64_MIN/-1和%-1會觸發該行為)。注意該訊號與浮點數溢位無關。 檢測到控制中斷掛起或者控制程序死亡時,程序會收到 SIGHUP。現在作業系統,該訊號通常意味著使用的 虛擬終端 已經被關閉。許多 守護程序 在接收到該訊號時,會過載他們的設定和重新開啟日誌檔案(logfiles),而不是去退出程式。nohup 命令用於無視該訊號。 當程序試圖執行非法、格式錯誤、未知或特權指令時,SIGILL訊號被髮送到該程序。 當使用者希望中斷程序時,SIGINT訊號由使用者的控制終端傳送到程序。這通常通過按下Ctrl+C來傳送,但是在某些系統中,可以使用“DELETE”鍵或“BREAK”鍵。 傳送SIGKILL訊號到一個程序可以使其立即終止(KILL)。與SIGTERM和SIGINT相不同的是,這個訊號不能被捕獲或忽略,接收過程在接收到這個訊號時不能執行任何清理。 以下例外情況適用: 當在大多數系統關閉程式中終止程序時,如果程序沒有響應 SIGTERM 而自動退出,SIGKILL 是最後的手段。為了加快電腦關機過程,蘋果OS X 10.6(又名雪豹)向標記自己為“clean”的程序傳送SIGKILL,從而加快關機時間,而且可能不會產生任何不良影響。。在 Linux 中執行 codice_5 命令具有類似不過更危險的效果;它不讓程式儲存未儲存的資料。  當一個程序試圖寫入一個沒有連線到另一端程序的管道時,SIGPIPE訊號會被髮送到該程序。  當一個事件發生在一個正在顯式監視的檔案描述符上時,就會傳送SIGPOLL訊號。有效使用這種用法可以進行非同步 I/O,因為核心將代替呼叫者輪詢描述符。它提供了主動輪詢的替代方案。  SIGRTMIN至SIGRTMAX訊號用於使用者自定義的目的。它們是實時訊號。  當程序在後臺試圖分別從tty讀取或寫入時,SIGTTIN和SIGTTOU訊號會被髮送到該程序。通常,這些訊號僅由作業控制下的程序接收;守護程序沒有控制終端,因此永遠不會接收這些訊號。

  一個程序可以自定義如何處理傳入的POSIX訊號。如果一個程序沒有定義一個訊號處理程式,那麼這個訊號的預設處理程式將被使用。下表列出了一些與POSIX相容的UNIX系統的預設操作,例如FreeBSD、OpenBSD和Linux。  對於大多數訊號,相應的訊號編號由實現定義。此列列出了POSIX標準中指定的數字。
在電腦科學中,訊號(英語:Signals)是Unix、類Unix以及其他POSIX相容的作業系統中程序間通訊的一種有限制的方式。它是一種非同步的通知機制,用來提醒程序一個事件已經發生。當一個訊號傳送給一個程序,作業系統中斷了程序正常的控制流程,此時,任何非原子操作都將被中斷。如果程序定義了訊號的處理函式,那麼它將被執行,否則就執行預設的處理函式。