linux操作系统信号捕捉函数之sigaction用法小结

(1)sigaction函数:注册一个信号捕捉函数(不参与捕捉信号,信号由内核捕捉),并修改原来的信号处理动作

(2)函数原型及头文件

             头文件:#include<signal.h>

            函数原型:int sigaction(int signum,const struct sigaction*act,struct sigaction*oldact);

(3)返回值:成功返回值为0.失败返回值为-1

(4)结构体参数:struct sigaction

           struct sigaction{

                               void  (*sa_handler)(int);//信号捕捉函数的函数指针

                               void  (*sa_sigaction)(int ,siginfo_t*,void*);//当sa_flag==SA_SIGINFO,使用此函数

                               sigset_t sa_mask;//信号捕捉函数执行时指定的临时信号集

                                int sa_flags;//通常设置为0,表示默认属性,即信号捕捉函数期间自动屏蔽本信号

                               void    (*sa_restorer)(void);//舍弃不用

                        };

(5)sigaction函数实现:

(6)sigaction使用注意点

         1)在信号捕捉函数执行期间,如果遇到sa_mask屏蔽信号字中的信号,则会发生阻塞,等到捕捉函数执行完毕后再处理这个信号。

         2)在信号捕捉函数执行期间,阻塞的常规信号不支持排队,产生多次只记录一次。如果再次发捕获信号,则会再次进入信号捕捉函数。

        3)如果在信号捕捉函数执行期间,遇到sa_mask之外的信号,则会优先执行这个信号,然后再执行信号捕捉函数(如果前面的信号没有让程序结束或暂停)。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值