问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

信号掩码的信号集处理函数

发布网友 发布时间:2022-05-26 10:08

我来回答

1个回答

热心网友 时间:2023-10-12 11:15

POSIX.1定义了数据类型sigset_t来表示或保存多个信号——信号集(signal set),信号掩码就存放在这些信号集中。POSIX定义了下列5个处理信号集的函数。
int sigemptyset(sigset_t *set) 初始化由set指向的信号集,清除其中所有信号,即设置所有信号掩码的阻塞标志
int sigfillset(sigset_t *set) 初始化由set指向的信号集,使其包括所有信号,即清除所有信号掩码的阻塞标志
int sigaddset(sigset_t *set, int signo) 将一个特定信号signo添加到set指向的信号集中,可用于增加个别信号阻塞
int sigdelset(sigset_t *set, int signo) 从set指向的信号集中删除一个特定信号signo,可用于删除个别信号阻塞
int sigismember(const sigset_t *set, int signo) 检查某个信号是否在set指向的信号集中,可确定特定的信号是否在掩码中被标志为阻塞。
另外,进程也可以调用sigprocmask()来检测和更改其当前的信号掩码,以便告诉内核不允许触发该信号集中的信号。其实现代码在kernel/signal.c中,原型为:
int sigprocmask(int how, const sigset_t *set, sigset_t *oset)
首先,若oset是非空指针,那么进程的当前信号掩码通过oset返回。
其次,若set是一个指向信号集的非空指针,则参数how指示如何修改当前进程的信号掩码。参数how的取值及含义如下:
SIG_BLOCK 该进程新的信号掩码是其当前信号掩码和set所指向信号集的并集,即set规定了我们希望阻塞的附加信号。
SIG_UNBLOCK 该进程新的信号掩码是其当前信号掩码和set所指向信号集的补集的交集,即set包含了我们希望解除阻塞的信号。
SIG_SETMASK 该进程新的信号掩码将被set指向的信号集代替,即set变成该进程新的信号掩码。
如果set是空指针,则不改变该进程的信号掩码,how的值也无意义。用一段代码来说明这个逻辑:
switch (how) {
case SIG_BLOCK:
current->blocked |= set;
break;
case SIG_UNBLOCK:
current->blocked &= ~set;
break;
case SIG_SETMASK:
current->blocked = set;
break;
default:
return -EINVAL;
}
其中current表示指向当前进程结构的指针,其中包含当前进程的信号掩码blocked。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么一些男性喜欢要求伴侣叫自己爸爸? proteus8中怎么放置引脚标号 ...在proteus里不知道用什么表示?有没有什么proteus中专门的中英文对照... 甜蜜家园郑毅铭是什么身份 甜蜜家园第二季郑毅铭喜欢谁 瑞梦喜智能空调床垫适合人群 小孩可以用智能床垫吗 智能床垫适合哪些人用 我父亲今年59岁,有高血压和颈椎病的病史,最近一段时间感觉一躺下就偏... ...刚从医院治疗回来。我想买个枕头给他,不知买怎样的比较好?_百度知 ... 有什么正规的外汇平台吗 sigaddset()的作用 求大神解释这个宏定义后面的意思,菜鸟看不懂啊啊#define sigfillset(ptr) ( *(ptr) = ~(sigset_t)0, 0) linux c sigfillset和sigprocmask的区别 苹果6p推送消息延迟 为什么iphone消息延迟 怎样练习高考英语听力 新鲜西梅200g有多少个 西梅有哪些营养价值?大家知道西梅吗? 环境污染的例子~急用~~~ CNC编程好学吗? 苹果6p推送消息延迟 为什么iphone消息延迟 制造企业的设备稼动率怎么计算? 请问同一台设备生产两种不同产品,如何计算其中一种产品的产能利用率? 求装备生产率计算公式 沥青混合料拌和设备生产效率怎么计算 夫妻之间经常会因为一些小事而吵架怎么办? 如何计算变频器总功率? cf我感觉黑骑士和普通的M4A1没什么差别啊 英雄级武器黑骑士与雷神、黑龙有什么区别? sigaction sa_flags问题 生产者消费者问题(2进程实现) c++中try后一定要跟catch吗 LINUX C没有try catch吗 axis 用class发布 写了个数据库JAVA程序,但是编译class失败 求Linux C 运行结果,求补充程序,如下程序中,求修改mygetchar()。能显示出是否发生了time-out。 请问经常看到有的罪犯被判死刑了可又说缓刑几年是什么意思啊?缓刑是什么啊? 在很多刑事案件中,有被判死刑,缓期两年执行的人,其中这个缓刑是什么意思啊? 判刑死刑缓刑两年是什么意思 手机下载秒剪说当前网络不可用 缓刑是判刑三年以下才能用的? 为什么死刑也有缓刑? 两个概念? 谢谢 想买一套伊丽莎白.雅顿的护肤品,能推荐见一下哪个系列好么? 高中化学电解原理的应用 上海纪宁实业有限公司怎么样? 上海宁品实业发展有限公司怎么样? 上海律宁实业有限公司怎么样? 纪宁是谁??? 上海宁兔实业有限公司怎么样? 上海协昌霍宁实业发展有限公司怎么样? 上海鲁宁电力燃料有限公司介绍?