linux 信号-- 安装

1. sigaction安装:

结构sigaction定义如下:

struct sigaction{
  void (*sa_handler)(int);
   sigset_t sa_mask;
  int sa_flag;
  void (*sa_sigaction)(int,siginfo_t *,void *);
};

 sa_hanlder: 一个带有int参数的函数指针, 或者SIG_IGN(忽略), 或者SIG_DFL(默认).

 sa_mask: 信号屏蔽字(集). 当该信号处理函数返回时, 屏蔽字恢复. 

 sa_sigaction: 替代的信号处理程序, 当使用了SA_SIGINFO标志时, 使用该信号处理程序.

 sa_flag是一个选项,主要理解三个

SA_INTERRUPT 由此信号中断的系统调用不会自动重启
SA_RESTART 由此信号中断的系统调用会自动重启

SA_SIGINFO 提供附加信息,一个指向siginfo结构的指针以及一个指向进程上下文标识符的指针

 

一般的用法:

struct sigaction newaction; 

newaction.sa_handler = handle;
newaction.sa_flags = 0;//SA_RESTART;  
sigemptyset(&newaction.sa_mask);
sigaddset(&newaction.sa_mask, 12); //设置上后,处理此信号期间,不会再收到此信号

sigaction(12, &newaction, NULL); 

 

2.  signal

可以用sigaction实现:

sig_func *signal(int signo, sig_func *func);
{
    structsigaction act, oact;

     act.sa_handler =func;
     sigemptyset(&act.sa_mask);
     act.sa_flags = 0;

    if (sigaction(signo,&act, &oact) < 0)
        returnSIG_ERR;

    return oact.sa_hanlder;
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值