【Linux】进程信号_3

文章目录

  • 八、进程信号
    • 2. 信号的保存
    • 3. 信号的处理
  • 未完待续


八、进程信号

2. 信号的保存

实际执行信号的处理动作称为信号递达(Delivery)
信号从产生到递达之间的状态,称为信号未决(Pending)。
进程可以选择阻塞 (Block )某个信号。
被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作。
注意,阻塞和忽略是不同的,只要信号被阻塞就不会递达,而忽略是在递达之后可选的一种处理动作。

在进程的PCB中,有两个位图,一个是判断是否收到相应信号的位图pending,一个是决定该位置的信号是否阻塞的位图block。
在这里插入图片描述
handler表是一组函数指针,决定信号的执行方法。
调用函数 sigprocmask 可以读取或更改进程的信号屏蔽字(阻塞信号集)。
在这里插入图片描述

int main()
{// 创建阻塞信号集sigset_t block, oblock;// 清空信号集sigemptyset(&block);sigemptyset(&oblock);// 将2号信号添加进阻塞信号集sigaddset(&block, 2);// 将阻塞信号集设置到内核中int n = sigprocmask(SIG_SETMASK, &block, &oblock);assert(n == 0);while (true){// 创建pending信号集sigset_t pending;sigemptyset(&pending);// 获取pending信号集n = sigpending(&pending);assert(n == 0);// 打印pending信号集PrintSig(pending);sleep(1);}return 0;
}

在这里插入图片描述
9号信号、19号信号无法被屏蔽,18号信号会做特殊处理。操作系统不允许出现 金刚不坏 的进程。
如何解除屏蔽?

	while (true){int cnt = 0;// 创建pending信号集sigset_t pending;sigemptyset(&pending);// 获取pending信号集n = sigpending(&pending);assert(n == 0);// 打印pending信号集PrintSig(pending);++cnt;if (cnt == 20){// 解除阻塞信号集n = sigprocmask(SIG_UNBLOCK, &block, &oblock);assert(n == 0);}sleep(1);}

3. 信号的处理


未完待续

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

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

相关文章

华为开发者调试工具使用介绍(MDC)

MDC的开发过程的三大工具:MMC、MDS、Mind Studio,这三个工具完成了开发过程中的配置文件编写、代码编写以及AI模型的开发三个任务。除了开发,MDC还准备了两个调试工具,用于使用过程中数据的查看等。这一些调试工具分别对映射MDC中…

单目标应用:基于鳗鱼和石斑鱼优化器(Eel and grouper optimizer,EGO)的微电网优化(MATLAB代码)

一、微电网模型介绍 微电网多目标优化调度模型简介_vmgpqv-CSDN博客 参考文献: [1]李兴莘,张靖,何宇,等.基于改进粒子群算法的微电网多目标优化调度[J].电力科学与工程, 2021, 37(3):7 二、鳗鱼和石斑鱼优化器求解微电网 2.1算法简介 鳗鱼和石斑鱼优化器&…

MySQL简介:开源数据库的基石(一)

目录 引言:数据库领域的革新者 一、MySQL的发展历程:从开源先锋到行业领袖 二、MySQL的核心特性:性能、安全与灵活性并重 三、MySQL的应用场景:从Web开发到企业级应用的全面覆盖 四、MySQL在开源数据库中的地位:开…

Excel直接打开csv文件后,数据不能正常显示的解决方法

很多处理公司数据的同事偶尔也会遇到使用Microsoft的Excel或者金山的WPS打开csv文件后,发现数据不能正常显示,其实csv属于一种数据库文件,遵循数据库存储的规则,建议使用导入的方式进行打开。 1.打开一张空白的Excel表&#xff0…

Spring Boot 集成 H2 数据库

1. 引言 Spring Boot 以其简洁的配置和快速开发能力,成为现代微服务架构的首选框架之一。而H2数据库作为一个轻量级的内存数据库,非常适合开发阶段作为嵌入式数据库进行单元测试和功能验证。本文将手把手教你如何在Spring Boot项目中集成H2数据库&#…

Open3D 显示带有强度的点云数据

目录 一、概述 1.1强度信息的意义 1.2应用场景 二、代码实现 三、实现效果 一、概述 在点云数据中,强度(Intensity)指的是激光雷达传感器在扫描环境时,每个点返回的反射强度值。这些强度值代表了激光脉冲返回的能量&#xff…

centos 破解密码

重启您的CentOS系统。 在GRUB引导加载器启动过程中,当看到启动画面时,按下e键进入编辑模式。 找到以 linux16 或 linux 开头的启动行。 在该行的末尾添加 rd.break 或者ro(只读)修改为 rw 加init/sysroot/bin/sh参数&#xff0…

Nacos详解

nacos官方文档:https://nacos.io/ 一、什么是nacos? Nacos是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 nacos官方文档:https://nacos.io/ nac…

数据结构--栈(图文)

栈是一种基本的抽象数据类型,具有后进先出的特点。在栈这种数据结构中,元素只能在一端进行插入和删除操作,这一端被称为栈顶(Top),而另一端则称为栈底(Bottom)。 栈的概念及特点 栈…

springboot社区维修平台

设计技术: springboot、mysql、maven、前端vue 主要功能: 住户管理、社区公告管理、维修工管理、维修订单管理、接单信息管理、订单信息管理、在线沟通管理、举报信息管理、留言板管理、系统管理等功能模块。 管理员功能模块 管理员通过后台登录页面…

基于单片机和 Arduino 平台的六自由度可控机械手臂

摘 要 : 为了降低机械手臂的设计开发难度 , 并使之尽早地投入应用 , 设计一种基于单片机和 Arduino 平台的六自由度可控机械手臂 。提出六自由度可控机械手臂的控制方案, 给出机械手臂控制系统的结构框图 。 详细设计六自由度可控机械手臂…

Websocket在Java中的实践——自动注册端点

在《Websocket在Java中的实践——握手拦截器》中我们使用握手拦截器实现了路径解析的工作。这个过程略显复杂,因为路径解析这样比较底层的工作应该由框架来解决,而不应该交由开发者来做。本文介绍的自动注册端点的功能就可以很优雅的解决这个问题。 依赖…

[C++][设计模式][原型模式]详细讲解

1.动机 在软件系统中,经常面临这“某些结构复杂的对象”的创建工作;由于需求的变化,这些对象经常面临着剧烈的变化,但是它们却拥有比较稳定一致的接口如何应对这种变化?如何向“客户程序(使用这些对象的程序)”隔离出…

STM32HAL库--IIC实验(速记版)

STM32 的普通 IO 口模拟 IIC 时序,可实现与 EEPROM 外设双向通信。 IIC 简介 IIC(Inter-Integrated Circuit)总线是一种由 PHILIPS 公司开发的两线式串行总线,用于连接微控制器以及其外围设备。 IIC 是由数据线 SDA 和时钟线 SCL 构成的串行总线。 IIC …

在数据库领域是如何实现“多租户”的呢?

数据库多租技术介绍 随着云计算时代的到来,多租户的概念也逐渐广为人知。“多租户”使得租户之间可以共享物理资源,能够帮助用户节约硬件成本和运维成本,提高资源利用效率。同时,在实现的过程中,考虑到共享带来的安全…

three.js - matcap材质(MeshMatcapMaterial)

说一下matcap纹理 先总结:MeshMatcapMaterial材质,通过采样含有光照信息的贴图来模拟光照效果。这种材质特别适用于模拟静态光源下的光照,并且,因其简单性和快速性而被广泛应用于各种场景。但是,由于其性能考虑&#x…

系统思考—啤酒游戏经营决策沙盘

在日常的教学中,我们通过系统思考仿真演练深入探索决策背后的动因。例如,我经常教授的麻省理工学院研发的“啤酒游戏”和“人民航空策略模拟”,这些都是麻省理工MBA学生的必修课。此外,还有更简洁的“红黑游戏”“收获季节”等模拟…

ElasticSearch索引架构与存储

关于ES官网的介绍: Elasticsearch provides near real-time search and analytics for all types of data. Whether you have structured or unstructured text, numerical data, or geospatial data, Elasticsearch can efficiently store and index it in a way that support…

在低版本Excel中创建次级下拉列表

在低版本中indirect函数不支持选区,创建次级下拉列表得依靠“名称管理”给选区命名。 (笔记模板由python脚本于2024年06月26日 06:24:22创建,本篇笔记适合常用Excel处理数据的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网:https://www…

mid360配置lio-sam、point-lio和faster-lio(faster-lio未敢配置)

一、使用mid360配置lio-sam 1.首先从GitHub - nkymzsy/LIO-SAM-MID360 at Livox-ros-driver2 下载能支持mid360的lio-sam版本到 ws_livox/src中,直接编译,就可以成功。 2.使用 roslaunch lio_sam run6axis.launch以及播之前我才记得Mid360的包&#x…