快速业务通道

未决信号与信号阻塞

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-20

  信号状态:

  信号的”未决“是一种状态,指的是从信号的产生到信号被处理前的这一段时间;

  信号的”阻塞“是一个开关动作,指的是阻止信号被处理,但不是阻止信号产生.

  APUE例题在sleep前用sigprocmask阻塞了退出信号,然后sleep,然后在sleep的过程中产生一个退出信号,但是此时退出信号被阻塞过,(中文的”阻塞”在这里容易被误解为一种状态,实际上是一种类似于开关的动作,说“被阻塞过”,而不是“被阻塞”)处于“未决”状态,在 sleep后又用sigprocmask关掉退出信号的阻塞开关,之前产生的退出信号一直处于未决状态,当关上阻塞开关后,马上退出“未决”状态,得到处理,这一切发生在sigprocmask返回之前.

  总结:信号被阻塞并不是被丢弃,只是没有被处理.这种状态叫未决状态.

  解除阻塞后,处于“未决状态”的信号会继续被处理.

  解除阻塞要调用sigprocmask,但在sigprocmask返回之前,解决阻塞动作就已经完毕.

  所在在解除阻塞的函数sigprocmask返回之前,就要进行未决信号的处理了.

  int sigpend(sigset_t *set);---获取未决的信号.

  int sigprocmask(int how,const sigset_t *set,sigset_t *oset);

  ----根据how的值来决是完成的动作,阻塞、解除阻塞等.

  注意:未决信号中不可能有相同的.如果信号产生

  了一次且未决,又产生一次时会被丢弃.

  当然如果是实时信号,就另当别论了.实时信号可以多个相同的未决信号的.

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号