32.信號的捕捉

1.signal函數
typedef void (*sighandler_t)(int);

sighandler_t signal(int signum,sighandler_t handler);

2.sigaction函數
函數原型:
 int sigaction(int signum,   //捕捉的信號
  const struct sigaction* act,
  struct sigaction* oldact

 );

 struct sigaction{
  void (*sa_handler)(int);
  void (*sa_sigaction)(int,siginfo_t*,void*);
  sigset_t sa_mask;   // 在信號處理函數執行過程中,臨時屏蔽指定的信號,若出現要屏蔽的信號,則執行完信號處理函數之後處理該信號
  int sa_flags;    //填0:表示調用sa_handler
  void (*sa_restorer)(void);

 };

一般需要處理的參數:sa_handler、sa_mask、sa_flags
不屏蔽信號:sigempty(&act.sa_mask);
設置屏蔽信號:sigaddset(&act.sa_mask,SIGQUIT);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章