首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >信号队列和信号掩码

信号队列和信号掩码
EN

Stack Overflow用户
提问于 2016-03-07 15:37:51
回答 1查看 1.7K关注 0票数 0

“Unix环境中的高级编程”一书说:

内核不对信号排队,除非它们支持POSIX.1的实时扩展。

如果一个阻塞信号被产生不止一次(生成的阻塞信号是不同的类型),它就设置在信号掩码上。然后,在其他信号之前传递与处理的当前状态相关的信号。

在这里,信号队列和信号掩码之间有区别吗?如果为每种不同类型设置了信号掩码,这意味着内核知道等待什么信号。(正因为如此,我认为队列和掩码是相同的。)

那么,发送一次信号是什么情况呢?当同一类型的信号不止一次传送时,会不会是这样?

另外,大多数UNIX系统,不排队信号意味着只有一个信号掩码位可以设置在透明掩码上?那么,如果在这个过程中阻塞了不同类型的许多信号,会发生什么呢?什么信号没有设定?

EN

回答 1

Stack Overflow用户

发布于 2017-02-16 20:56:10

信号面罩:当前被阻塞的信号集合称为信号掩码。进程可以设置信号掩码,告诉内核它不想接收特定的信号。因此,发送这些阻塞信号之一意味着将不调用相应的信号处理程序。SIGKILLSIGSTOP信号不能被阻塞。

信号队列:每个进程维护一个它已经接收但尚未处理的信号队列。使用掩码阻塞的信号将排队。该进程可以通过sigwait()sigwaitinfo()和类似的函数访问此队列。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35847773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档