1. 程式人生 > >函數函數sigaction、signal

函數函數sigaction、signal

動作 信號處理函數 const 屏蔽 元素 賦值 num clas 集合

函數函數sigaction

int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);

分析:

  • act:傳入參數,新的處理方式
  • oldact:傳出參數,舊的處理方式
1 struct sigaction
2 {
3     void(*sa_handler)(int);
4     void(*sa_sigaction)(int, siginfo_t *, void *);
5     sigset_t   sa_mask;
6     int        sa_flags;
7 void(*sa_restorer)(void); 8 };

分析:

  • sa_restorer:該元素是過時的,不應該使用, POSIX.1標準將不指定該元素。(棄用)
  • sa_sigaction:當sa_flags被指定為SA_SIGINFO標誌時,使用該信號處理程序(很少使用)

重點掌握:

  • sa_handler:指定信號捕捉後的處理函數名(即註冊函數)。可賦值為SIG_IGN表忽略或SIG_DFL表執行默認動作
  • sa_mask:調用信號處理函數時,所要屏蔽的信號集合(信號屏蔽字)。註意僅在處理函數調用期間屏蔽。(默認屬性:信號捕捉函數執行期間,自動屏蔽本信號)
  • sa_flag:通常設置為0,表默認屬性

函數函數sigaction、signal