繁体   English   中英

信号队列和信号掩码

[英]signal queue and signal mask

《 Unix环境中的高级编程》一书说:

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

如果产生的阻塞信号不止一次(产生的阻塞信号是不同类型),则将其设置在信号掩码上。 然后,与该过程的当前状态相关的信号在其他信号之前被传递。

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

而且,一次传递信号是什么情况? 当相同类型的信号被多次发送时,是否会发生这种情况?

而且,在大多数UNIX系统上,是否不对信号排队意味着在清除掩码上只能设置1个信号掩码位? 那么,如果在该过程中阻塞了许多不同类型的信号,会发生什么呢? 没有设置什么信号?

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

信号队列:每个进程都维护一个已接收但尚未处理的信号队列。 已被遮罩屏蔽的信号将排队。 进程可以通过sigwait()sigwaitinfo()和类似函数访问此队列。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM