当前位置:  技术问答>linux和unix

学习linux的新手问:linux进程信号掩码以及信号阻塞与信号未决怎么理解?

    来源: 互联网  发布时间:2016-09-15

    本文导语:  看了文章:Linux环境进程间通信(二): 信号(上) http://www.ibm.com/developerworks/cn/linux/l-ipc/part2/index1.html Linux环境进程间通信(二): 信号(下) http://www.ibm.com/developerworks/cn/linux/l-ipc/part2/index2.html 里面提到信号阻塞 ...

看了文章:Linux环境进程间通信(二): 信号(上)
http://www.ibm.com/developerworks/cn/linux/l-ipc/part2/index1.html
Linux环境进程间通信(二): 信号(下)
http://www.ibm.com/developerworks/cn/linux/l-ipc/part2/index2.html


里面提到信号阻塞 信号未决, 以及掩码要怎么理解?特别第二篇文章的这段

sigwaitinfo()
该函数与sigsuspend()类似,阻塞一个进程直到特定信号发生,但信号到来时不执行信号处理函数,而是返回信号值。因此为了避免执行相应的信号处理函数,必须在调用该函数前,使进程屏蔽掉set指向的信号,因此调用该函数的典型代码是:

sigset_t newmask;
int rcvd_sig; 
siginfo_t info;
sigemptyset(&newmask);
sigaddset(&newmask, SIGRTMIN);
sigprocmask(SIG_BLOCK, &newmask, NULL);
rcvd_sig = sigwaitinfo(&newmask, &info) 
if (rcvd_sig == -1) {
..
}

sigprocmask(SIG_BLOCK, &newmask, NULL); 这句话怎么是屏蔽掉set指向的信号,应该是在掩码中加入该信号吧?第一次接触这个信号,望各位高人详细解释下

|
看UNIX环境高级编程第二版的第十章.
熟读APUE是正道, 别看网上那些文章了.

|
信号掩码是线程相关的,含义大概是:

 这些信号被本线程阻塞,所以收不到,"停留在半路,不会到达",这就是信号未决。

但是一旦UNBLOCK这些信号,仍然可以收到。并执行信号处理函数;

SIGWAITINFO函数会阻塞,等待newmask参数中的某一个信号到达,返回。

|
LS回答的都不错,差不多就是那个意思。


加一句。通过线程mask,阻塞线程,直到状态发生改变。


在我们现在用的redhat 系列的linux中,阻塞的信号无论你发多少次,它只发一次。

|
嗯是的。   非实时信号一般都是不排队。

补充一下 SIGWAITINFO函数会阻塞,等待newmask参数中的某一个信号到达,返回。
但是不执行信号处理函数。

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 我想学习linux桌面编程,那么有没有必要学习linux的内核以及内核的相关编程呢?
  • 我想问一个大家,我现在刚学习LINUX,我想问一下在LINUX学习哪些知识有前途???
  • 新手提问:学习c++同时也想学习unix和linux
  • 学习linux网络编程需要学习些内核知识吗?
  • 想找共同学习Linux的新手,一起学习,共同成长
  • 我想学习linux,请问哪个linux版本适合新手学习,哪里有相关资料下载,谢谢了
  • 你们学习Linux是学习什么的?
  • 我想学习Unix,请高手给个下载网址,用linux来学习Unix差别大吗?
  • 我想学习LINUX,在哪里下手学习,我现在要看什么样的教材?
  • 我是学习web开发的,主要是java开发SSH开发框架和ajax等。我想知道有没有必要学习一下linux相关知识。
  • 找几位刚刚入手学习Linux kernel的人共同学习(0.11 赵炯)
  • 想学习Linux编程 哪里有比较好的讨论区(有学习资源)
  • 学习linux一定要先学习寄存器、汇编等吗
  • 小弟刚来,只能给100分!请教一下各位:学习LINUX,用什么作为学习的“入门书”?推荐一个作为我的第一本书吧!
  • 装好了ubuntu怎样学习c++,linux下C++学习的环境软件是什么?
  • 因进修,需要学习《Unix 环境高级编程》一书,完全没接触过Unix/Linux,请推荐一个学习环境。
  • 自己的机器上不能安装linux,还有办法学习linux吗?
  • 学习linux内核入门:从哪一部分开始学习?
  • 本人想学习linux,请问哪里有比较小的linux版本
  • 【版主】新来一个Linux学习网站 http://www.go2linux.cn/ 散分
  • PHP介绍及学习网站推荐
  • 想深入学习Java应该学习哪些东西
  • 准备学习docker: docker version命令查看版本
  • 学习c后,学习pb,大家提点建议,谢谢哦
  • HTML 学习总结及下一步学习教程推荐
  • 有最近开始学习Minix的吗?一起来学习吧
  • OpenStack相关学习资料搜集
  • 我想问问哪里有AIX下啊!~版本越新越好!~我想拿来学习学习
  • juqery的python实现:pyquery学习使用教程
  • 论坛 iis7站长之家
  • 从Delphi开始学习Java,如何学习Java.欢迎大家的光临!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3