信號是用於一步事件的。當一個信號發生時,程序會按照已經設定好的程序來執行相應的操作。
進程對信號處理的方法一般有兩種:
1、捕捉信號:當一個信號發送個進程時,該進程會調用此信號注冊的信號處理函數,來完成相應的操作。對應於每個信號系統一般會有相應的默認處理函數(一般為終止進程)。所以可以設置信號為默認的處理函數。
2、忽略信號。當信號發送時,進程忽略信號。
注:有兩個信號是無法捕捉和忽略的SIGKILL和SIGSTOP。它們是提供給管理員,可以在任何時刻終止某個進程而設定的。
對信號處理的要求:在用戶編程時有時進程需要對某信號進行立即響應。對有些實時進程來說,當它執行時是不願意被打斷的,這是就需要把接收的信號掛起。
信號的使用:
信號最常見的一個應用就是發生錯誤時通知進程結束。對於許多錯誤,如bus錯誤,浮點錯誤,調用內存錯誤等都有相應的信號通知進程。
此外信號還有其他用途。如運行一個大型的科學運算程序,若是在一個無窮循環中用printf來顯示運行狀態,勢必造成運行效率的下降。所以通過信號,人為的向進程發送消息,來查看運行狀態,就大大的提高了運行效率。