當前位置:編程學習大全網 - 源碼下載 - 為什麽用sigaction設置了捕獲功能,進程仍然終止?

為什麽用sigaction設置了捕獲功能,進程仍然終止?

信號與某些過程相關聯。換句話說,進程可以決定在進程中處理哪些信號。例如,壹個進程可以忽略壹些信號,只處理其他信號;此外,進程還可以選擇如何處理信號。簡而言之,這些總是與特定的過程相關聯。所以首先要建立信號和進程的對應關系,也就是信號的安裝註冊。

Linux主要有兩個函數實現信號的安裝和註冊:signal和sigaction。其中,signal是在系統調用的基礎上實現的,是壹個庫函數。它只有兩個參數,不支持信號傳輸。主要用於前32個非實時信號的安裝。Sigaction是壹個比較新的函數(由sys_signal和sys_rt_sigaction兩個系統調用實現),有三個參數,支持信令信息,主要配合sigqueue系統調用使用。當然sigaction也支持非實時信號的安裝,sigaction優於signal主要是因為它支持帶參數的信號。

對於應用本身處理的信號,信號的生命周期要經歷信號安裝註冊、信號集運行、信號發送、信號處理四個階段。信號安裝註冊是指在應用程序中安裝該信號的處理方法。信號設置操作的功能是屏蔽指定的壹個或多個信號,這對於某些應用是不必要的。信號發送是指發送信號,可以通過硬件(比如在終端上按Ctrl-C)和軟件(比如通過kill函數)來發送。信號處理是指操作系統對接收到的信號進行處理的過程。處理方法是先檢查信號設置操作功能是否屏蔽了信號。如果沒有屏蔽,操作系統會根據信號安裝函數中註冊的處理函數完成該進程的處理。

  • 上一篇:怎樣用c語言編下面的程序(初級競賽題)
  • 下一篇:計算機編程
  • copyright 2024編程學習大全網