第五部分:5---三张信号表,信号表的系统调用

news2024/11/17 19:46:37

目录

信号的递达、未决、阻塞:

进程维护的三张信号表:

普通信号与实时信号的记录:

信号结构的系统调用:

bolck表的系统调用:

实例:设置屏蔽信号集中的所有信号都频闭

pending表读取:


信号的递达、未决、阻塞:

  • 信号的处理动作称为信号的递达。

  • 从信号产生到实际处理之间的状态称为信号未决。未决的信号保存在PCB的pending表中。

  • 信号可以被阻塞,这种状态称为信号阻塞,即信号被暂时保留不会立即递达。

  • 阻塞的信号保存在pending表中,直到阻塞解除后才被递达,也就是阻塞表block中对应信号位置被设为0。

进程维护的三张信号表:

  • 每个进程维护三张表,用于管理信号:

  • block表:表示是否对信号进行阻塞,1为阻塞,0为不阻塞。也成为信号屏蔽字表。

  • pending表:即未决位图表,记录当前未决信号(信号已产生但尚未递达)。

  • handle表:存储信号的处理方法的指针,是一个函数指针数组(处理函数的指针)。

普通信号与实时信号的记录:

  • 普通信号:普通信号如果被阻塞,但在阻塞期间多次产生,也只会被处理一次,位图只记录信号是否产生,不会记录产生了多少次。

  • 实时信号:实时信号如果被阻塞,但在阻塞期间多次产生,多次产生的信号会被依次记录在一个队列中,等阻塞解除,就会依次递达。

信号结构的系统调用:

  • sigset_t 是一种专门用于管理信号集的类型,通过下列接口,可以对sigset_t类型的变量做出位操作。

int sigemptyset(sigset_t *set):初始化信号集,全部初始化为0。
int sigfillset(sigset_t *set):初始化信号集,全部信号设置为1。
int sigaddset(sigset_t *set, int signum):将指定信号添加到信号集中。
int sigdelset(sigset_t *set, int signum):将指定信号从信号集中删除。
int sigismember(const sigset_t *set, int signum):检查信号集是否包含指定信号。

bolck表的系统调用:

#include <signal.h>
int sigprocmask(int how, const sigset_t *set, sigset_t *oldset);
//how可选状态有三种:
//SIG_BLOCK,将 set 中的信号添加到当前进程的信号屏蔽集中。也就是说,set 中指定的信号将被阻塞,不能被处理。
//SIG_UNBLOCK,从当前进程的信号屏蔽集中解除 set 中存在信号的屏蔽,允许这些信号被递交并处理。
//SIG_SETMASK,将当前进程的信号屏蔽集完全替换为 set 中的信号集。换句话说,set 中的信号将成为唯一被阻塞的信号,其他的信号将被解除阻塞。
//oldset是一个输出型参数,存储修改前的信号集。

实例:设置屏蔽信号集中的所有信号都频闭

sigset_t block,oldblock; //创建两个sigset_t类型变量
sigemptyset(&block); //初始化两个变量
sigemptyset(&oldblock);
​
for(int i=1;i<32;i++)
{
    sigaddset(&block,i);//将block所有信号位都设置为阻塞
}
sigprocmask(SIG_SETMASK,&block,&oldblock); //设置信号集到屏蔽字。

pending表读取:

#include <signal.h> //头文件包含
int sigpending(sigset_t *set); 
//参数是一个返回类型参数,可以得到pending信号集。
//返回值0代表成功获取pending表成功,-1代表获取失败。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2171354.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第一本RAG书籍《大模型RAG实战》出版!

随着ChatGPT的爆火&#xff0c;推动了新一轮的AI技术进步。但大模型自身存在幻觉、知识更新难等问题&#xff0c;阻碍了其直接进行落地应用。RAG&#xff08;Retrieval-Augmented Generation&#xff09;技术将LLM与文本信息检索相结合&#xff0c;解决了在一些场景下模型知识不…

数字人直播违规原因究竟是什么?哪些技术可以解决?

随着人工智能时代的来临&#xff0c;以数字人直播为代表的技术应用逐渐被各大中小型企业引进&#xff0c;并成为了它们在直播板块降本增效的利器。不过&#xff0c;从目前的应用情况来看&#xff0c;不少企业都在使用数字人无人直播的过程中遭遇了违规封号的问题。在此背景下&a…

每天分享一个FPGA开源代码(7)- 6种乘法运算实现

​ FPGA开发中经常会遇到各种乘法运算。 这里分享下各种实现&#xff1a; Array Multiplier&#xff08;阵列乘法器&#xff09;、Complex Multiplier&#xff08;复数乘法器&#xff09;、Fraction Multiplier&#xff08;分数乘法器&#xff09;、High Radix Multiplier&a…

基于大数据技术的音乐数据分析及可视化系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏&#xff1a;Java精选实战项目…

rk3588s android12 自启动 C程序

首先是 拷贝 TEST程序 到android跟文件系统看看能否成功。 首先将需要 在android 系统中 启动的 TEST 程序,拷贝到虚拟机。 这个程序 然后需要拷贝到 android 的文件系统中。 我是这样做的。 改的是这个文件。 然后, 编译+烧写测试。 发现, 在android 系…

detectron2是怎么建立模型的?以SparseInst代码为例

看SparseInst论文发现论文里有些地方没讲清楚&#xff1b;遂找SparseInst源码来看模型结构 我选择从推理代码来找模型结构&#xff1a; 经探索&#xff0c;在SparseInst代码里&#xff0c;推理需要执行代码 python demo.py --config-file configs/sparse_inst_r50_base.yaml …

Verilog基础:时序调度中的竞争(四)(描述时序逻辑时使用非阻塞赋值)

相关阅读 Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html?spm1001.2014.3001.5482 作为一个硬件描述语言&#xff0c;Verilog HDL常常需要使用语句描述并行执行的电路&#xff0c;但其实在仿真器的底层&#xff0c;这些并行执行的语句是有先后顺序…

Python精选200Tips:176-180

针对图像的经典卷积网络结构进化史及可视化 P176--LeNet-5【1988】模型结构说明模型结构代码模型结构可视化 P177--AlexNet【2012】模型结构及创新性说明模型结构代码模型结构可视化 P178--VGGNet【2014】VGG19模型结构及创新性说明VGG19模型结构代码VGG19模型结构可视化 P179-…

Datawhale Leecode基础算法篇 task04:贪心算法

官方学习文档&#xff1a;datawhalechina 往期task01&#xff1a;枚举算法链接&#xff1a;Datawhale Leecode基础算法篇 task01&#xff1a;枚举算法 往期task02&#xff1a;递归算法and分治算法&#xff1a;Datawhale Leecode基础算法篇 task02&#xff1a;递归算法and分治…

项目实战:k8s部署考试系统

一、新建nfs服务器&#xff08;192.168.1.44&#xff09; 1.基础配置&#xff08;IP地址防火墙等&#xff09; 2.配置时间同步 [rootlocalhost ~]# yum -y install ntpdate.x86_64 [rootlocalhost ~]# ntpdate time2.aliyun.com 27 Sep 10:28:08 ntpdate[1634]: adjust tim…

风景视频素材高清无水印怎么找?推荐几个风景视频素材下载网站

那些绝美的大自然风景视频素材都在哪里找的&#xff1f;今天就跟大家聊聊那些可以下载高清无水印的大自然风景视频素材的网站&#xff0c;如果你也在苦苦寻找&#xff0c;快来看看吧&#xff5e; 1. 稻虎网 稻虎网作为国内遥遥领先的视频素材网站&#xff0c;提供了大量高清无…

2024最新Linux Socket编程

我们深谙信息交流的价值&#xff0c;那网络中进程之间如何通信&#xff0c;如我们每天打开浏览器浏览网页时&#xff0c;浏览器的进程怎么与web服务器通信的&#xff1f;当你用QQ聊天时&#xff0c;QQ进程怎么与服务器或你好友所在的QQ进程通信&#xff1f;这些都得靠socket&am…

Meta广告资料库使用教程:Facebook、Instagram海外社媒营销统统拿下!

社交媒体现今已成为大部分商家宣传推广方案中的重要工具&#xff0c;尤其是Meta旗下的两个主流社媒平台Facebook和Instagram&#xff0c;活跃用户数量以数十亿计&#xff0c;分布地区也非常广。要运用好自带影响力的社媒平台的传播力量和庞大数据&#xff0c;优化自身的宣传推广…

【Kubernetes】常见面试题汇总(四十二)

目录 96. Kubernetes 体系结构有哪些不同的组成部分&#xff1f; 97.您能否简要介绍一下 Kubernetes 中主节点的工作&#xff1f; 特别说明&#xff1a; 题目 1-68 属于【Kubernetes】的常规概念题&#xff0c;即 “ 汇总&#xff08;一&#xff09;~&#xff08;二十二…

亚马逊 Bedrock 平台也能使用Llama 3.2 模型了

亚马逊 Bedrock 平台推出 Llama 3.2 模型&#xff1a;多模态视觉和轻量级模型 概述 由 Meta 提供的最新 Llama 3.2 模型现已在 Amazon Bedrock 平台上推出。这一新模型系列标志着 Meta 在大型语言模型&#xff08;LLM&#xff09;领域的最新进展&#xff0c;它在多种应用场景…

养猫久了才发现,宠物空气净化器才是真正除猫毛的神器

相信每个打工人都在期待这个国庆小长假吧&#xff0c;终于等到了&#xff01;这次我要把属于我的都夺回来&#xff01;刚好工资到手、小长假我有&#xff0c;只想往家里一躺什么也不想&#xff0c;唯一最想做的就是要在这个节假日里好好的陪一下我家猫咪&#xff0c;还有就是买…

【企业微信】群机器人自动消息配置

0、群聊机器人 内部企微群聊可以添加一个机器人&#xff0c;这个机器人其实是个消息接口&#xff0c;可以外部脚本来自动定时发送消息到群里&#xff0c;打工人最有用的提醒就是每周提醒发周报了。 1、创建机器人 一般公司都没有人使用&#xff0c;我们可以手动创建一个。 …

前端练习总结(1)

前端实习练习题 前端实习笔试题0920 visibility:hidden display:none把鼠标移到按钮并点击时 hover active focus的顺序代码输出结果1代码输出结果2CSS中哪些属性可以继承cookie sessionStorage localstorage区别面向对象基本特征有哪些,请具体说明下列关于v-model的说法,哪项…

统信服务器操作系统进入【单用户模式】

统信服务器操作系统D版、E版、A版进入单用户模式的方式。 文章目录 前言一、问题现象二、问题原因三、解决方案1. D版问题解决方案2. E版及A版问题解决方案前言 D版又称企业版、E版又称欧拉版、A版又称龙蜥版。 单用户模式主要是在 grub2 引导时编辑内核引导,一般用于修改用…

STM32CUBEIDE FreeRTOS操作教程(五):mutex互斥信号量

STM32CUBEIDE FreeRTOS操作教程&#xff08;五&#xff09;&#xff1a;mutex互斥信号量 STM32CUBE开发环境集成了STM32 HAL库进行FreeRTOS配置和开发的组件&#xff0c;不需要用户自己进行FreeRTOS的移植。这里介绍最简化的用户操作类应用教程。以STM32F401RCT6开发板为例&am…