专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Solaris

无法阻塞信号的有关问题(附程序)

发布时间:2011-06-27 19:04:37 文章来源:www.iduyao.cn 采编人员:星星草
无法阻塞信号的问题(附程序)
#include<stdio.h>
#include<stdlib.h>
#include<signal.h>
void myHandler(int sig);
int main(int argc,char *argv[])

   struct sigaction act, oact;
        sigset_t oldmask;
   act.sa_handler = myHandler;
        sigfillset(&act.sa_mask);/////////////想用这行代码来阻塞SIGUSR1,但是不行,错在何处?请高手指教
   act.sa_flags = 0;
   sigaction(SIGUSR1, &act, &oact); 
    while (1) 

printf("Hello world.\n"); 
pause();
}
  }

  void myHandler(int sig)
  {
    printf("I got signal: %d.\n", sig);
  }

------解决方案--------------------
sigfillset(&act.sa_mask);
去掉看看,我记得sigaction缺省是阻塞的.
------解决方案--------------------
sigfillset(将所有信号加入至信号集) 
相关函数 sigempty,sigaddset,sigdelset,sigismember
 
表头文件 #include<signal.h>
 
定义函数 int sigfillset(sigset_t * set);
 
函数说明 sigfillset()用来将参数set信号集初始化,然后把所有的信号加入到此信号集里。
 
返回值 执行成功则返回0,如果有错误则返回-1。
 
附加说明 EFAULT 参数set指针地址无法存取
 
而真正阻塞的函数是signal()函数,它会阻塞到它等待的信号有回应才会进行相应的处理
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: