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);

猜你喜欢

转载自blog.csdn.net/disappear_xuechao/article/details/80935853