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

目录

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

进程维护的三张信号表:

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

信号结构的系统调用:

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代表获取失败。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络——TCP/IP网络模型

1. TCP/IP网络模型有哪几层 对于同一台设备上的进程间通信&#xff0c;有很多种方式&#xff0c;比如管道、消息队列、共享内存、信号等。而对于不同设备上的进程间通信&#xff0c;就需要网络通信&#xff0c;而设备是多样性的&#xff0c;所以要兼容多种多样的设备&#xff…

STM32快速复习(十二)FLASH闪存的读写

文章目录 一、FLASH是什么&#xff1f;FLASH的结构&#xff1f;二、使用步骤1.标准库函数2.示例函数 总结 一、FLASH是什么&#xff1f;FLASH的结构&#xff1f; 1、FLASH简介 &#xff08;1&#xff09;STM32F1系列的FLASH包含程序存储器、系统存储器和选项字节三个部分&…

Java每日面试题(JVM)(day15)

目录 Java对象内存布局markWord 数据结构JDK1.8 JVM 内存结构JDK1.8堆内存结构GC垃圾回收如何发现垃圾如何回收垃圾 JVM调优参数 Java对象内存布局 markWord 数据结构 JDK1.8 JVM 内存结构 程序计数器: 线程私有&#xff0c;记录代码执行的位置. Java虚拟机栈: 线程私有&#…

HarmonyOS鸿蒙系统开发应用程序,免费开源DevEco Studio开发工具

DevEco Studio 是华为为 HarmonyOS 和 OpenHarmony 开发者提供的官方集成开发环境&#xff08;IDE&#xff09;&#xff0c;它基于 IntelliJ IDEA Community 版本打造&#xff0c;提供了代码编辑、编译、调试、发布等一体化服务。 一、DevEco Studio支持系统 DevEco Studio支持…

Centos怎么执行脚本

方法一&#xff1a;切换到shell脚本所在的目录&#xff08;此时&#xff0c;称为工作目录&#xff09;执行shell脚本 cd /data/shell ./hello.sh 方法二&#xff1a;以绝对路径的方式去执行bash shell脚本 /data/shell/hello.sh 方法三&#xff1a;直接使用bash 或sh 来执行…

中国算力大会启幕,联想发布异构智算产业创新成果

9月27日&#xff0c;2024中国算力大会在河南郑州拉开帷幕。作为全球领先的算力基础设施和服务提供商&#xff0c;联想集团参会参展并携手异构智算产业联盟承办2024异构智算产业生态联盟技术论坛。 据「TMT星球」了解&#xff0c;论坛发布了新一代AI服务器、AI应用部署解决方案…

飞睿智能实时雷达活体探测传感器模块,智能家居静止检测实时感知人员有无

随着科技的飞速发展&#xff0c;我们的生活正在经历着未有的创新。在这个创新的浪潮中&#xff0c;实时雷达活体探测传感器模块的技术正逐渐崭露头角&#xff0c;以其独特的优势为我们的生活带来安全与便捷。今天&#xff0c;我们就来详细探讨一下这项技术&#xff0c;看看它是…

Spring Boot 学习之路 -- 配置项目

前言 最近因为业务需要&#xff0c;被拉去研究后端的项目&#xff0c;代码框架基于 Spring Boot&#xff0c;对我来说完全小白&#xff0c;需要重新学习研究…出于个人习惯&#xff0c;会以 Blog 文章的方式做一些记录&#xff0c;文章内容基本来源于「 Spring Boot 从入门到精…

python-4-4-编程规范2

str1 ,str2 input("请输入两个学生的姓名&#xff0c;用空格分开").split() print(str1) print(str2)print("hello python")name "Jim" print("His name is :",name)a "hello" b "python" print(a,b)print(&q…

ResNet50V2:口腔癌分类

本文为为&#x1f517;365天深度学习训练营内部文章 原作者&#xff1a;K同学啊 一 ResNet和ResNetV2对比 改进点&#xff1a;(a)original表示原始的ResNet的残差结构&#xff0c;(b)proposed表示新的ResNet的残差结构&#xff0c;主要差别就是(a)结构先卷积后进行BN和激活函数…

原生app云打包,更换图标,和名称。PDA的安装正式包

原生app云打包 复制下载即可&#xff0c;是正式版

Python批量处理客户明细表格数据,挖掘更大价值

批量处理 .xls 数据并进行归类分析以挖掘内在价值&#xff0c;通常涉及以下步骤&#xff1a; 读取数据&#xff1a;使用 pandas 库读取 .xls 文件。数据清洗&#xff1a;处理缺失值、异常值、重复值等。数据转换&#xff1a;对数据进行必要的转换&#xff0c;如日期格式统一、…

yolo自动化项目实例解析(七)自建UI--工具栏选项

在上一章我们基本实现了关于预览窗口的显示&#xff0c;现在我们主要完善一下工具栏菜单按键 一、添加工具栏ui 1、配置文件读取 我们后面要改的东西越来越多了&#xff0c;先加个变量文件方便我们后面调用 下面我们使用的config.get意思是从./datas/setting.ini文件中读取关键…

RP2040 C SDK GPIO和IRQ 唤醒功能使用

RP2040 C SDK GPIO和中断功能使用 SIO介绍 手册27页&#xff1a; The Single-cycle IO block (SIO) contains several peripherals that require low-latency, deterministic access from the processors. It is accessed via each processor’s IOPORT: this is an auxiliary…

PHP基础知识

一、PHP变量&#xff1a; 变量是用于存储信息的"容器" <?php$x5;$y6;$z$x$y;echo $z; ?> 在 PHP 中&#xff0c;这些$字母被称为变量。 PHP 变量 变量可以是很短的名称&#xff08;如 x 和 y&#xff09;或者更具描述性的名称&#xff08;如 age、carname、…

【Java异常】(简简单单拿捏)

【Java异常】&#xff08;简简单单拿捏&#xff09; 1. 异常的简单介绍2. 异常的抛出2.1 语法 3. 异常的处理3.1 异常声明throws3.2 try-catch捕获并处理 4. 例子&#xff08;try-catch自定义异常&#xff09; 1. 异常的简单介绍 程序员在运行代码时会遇到很多异常&#xff0c…

学习threejs,绘制二维线

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言二、&#x1f340;绘制二维线1. ☘️…

基于Hive和Hadoop的保险分析系统

本项目是一个基于大数据技术的保险分析系统&#xff0c;旨在为用户提供全面的汽车保险信息和深入的保险价格分析。系统采用 Hadoop 平台进行大规模数据存储和处理&#xff0c;利用 MapReduce 进行数据分析和处理&#xff0c;通过 Sqoop 实现数据的导入导出&#xff0c;以 Spark…

2016年国赛高教杯数学建模A题系泊系统的设计解题全过程文档及程序

2016年国赛高教杯数学建模 A题 系泊系统的设计 近浅海观测网的传输节点由浮标系统、系泊系统和水声通讯系统组成&#xff08;如图1所示&#xff09;。某型传输节点的浮标系统可简化为底面直径2m、高2m的圆柱体&#xff0c;浮标的质量为1000kg。系泊系统由钢管、钢桶、重物球、…

SpringBoot使用EasyPoi根据模板导出word or pdf

1、导出效果 1.1 wrod 1.2 pdf 2、依赖 <!--word--><dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-base</artifactId><version>4.3.0</version></dependency><dependency><groupId>cn.…