linux(信号产生中)代码来验证

news2025/2/24 15:23:10

 我们应该如何理解我们调用系统接口并不是简单的调用系统接口这么简单就完事了---我们有时候也是需要使用由操作系统为我们提供的操作系统的层面的数据类型

sigset_t

我们来介绍一种类型,从我们之前学的图来看,每一个信号不管是在block表还是在pending表当中,它只有一个比特位来标识未决,非0即1,不记录该信号产生多少次,实际上pending和block这两个位图我们可以用相同的类型来表示的,在linux操作系统当中这种数据类型我们称为sigset_t

如果你告诉我这个pending和信号屏蔽字是位图,那我自己直接做按位与,按位或,就搞定了,操作系统是不允许你这样子干的,操作系统给你提供了 sigset_t 类型,给你提供的,你自己把你的sigset_t 变量设置好,然后传给我,我在设置

说白了我们的sigset_t就是我们的信号集,也就是位图结构,它表示有效和无效这种概念

sigset_t 在表示pending时,表示的概念就是有还是没有对应的信号

sigset_t 在表示信号屏蔽字时,表示的概念就是该信号是否被阻塞

 set是一个变量,该变量在什么对方保存???和我们之前用到的int,double,没有任何差别,都是在用户栈上

我们现在要做的就是修改这个sigset ,并且还要把sigset修改后的值呢写到我们的操作系统里

接下来我们怎么去设置与进程信号相关的内容呢??也就是pending和block位图表

sigprocmask

sigprocmask作用是用来修改当前进程的block位图

 

 所以说我将31个信号都给屏蔽了,或者将所有信号都自定义捕捉了,写了一个无坚不摧的进程是不存在的,因为我的9号信号不能被屏蔽,也不能被自定义捕捉,可以杀死你的进程

---------------------------------------------------------------------------------------------------------------------------------

sigpending

sigpending的作用不对pending位图做修改,而只是单纯的获取进程的pending位图

 我们现在就很好奇了,你不对pending位图做修改,那么pending位图谁来改呢??主要是你没必要改,pending收信号就可以了,没有修改的必要

-----------------------------------------------------------------------------------------------------------------------

如果我的进程预先屏蔽掉2号信号,然后我不断的获取当前进程的pending位图,并打印显示(刚开始没有发送2号信号的时候打印的一定全是  00000000000000000000...)然后我手动发送2号信号,因为2号信号不会被递达,所以,当我不断在进行打印的时,能明显感受到有一个比特位设为1了,同时因为改信号不能被递达,所以永远只能被保留在pending位图里

 

 -----------------------------------------------------------------------------------------------------------------------------

 我们可以对2号信号进行捕捉,自定义我们对2号信号的执行动作,就可以看到我们想看到的现象!!!

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

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

相关文章

鄂尔多斯市政务协同办公平台,让全市政务更协同高效

近年来,国家高度重视数字政务建设,以数字化推进国家治理体系和治理能力现代化,助力建设人民满意的服务型政府。 2018年,国务院办公厅印发《进一步深化“互联网政务服务”推进政务服务“一网、一门、一次”改革实施方案》&#xf…

这份阿里巴巴内部Spring Cloud Alibaba全套笔记,几乎涵盖了所有操作

Spring Cloud Alibaba 是阿里巴巴提供的微服务开发一站式解决方案,是阿里巴巴开源中间件与 Spring Cloud 体系的融合。 Springcloud 和 Srpingcloud Alibaba 区别? SpringCloud: 部分组件停止维护和更新,给开发带来不便;SpringCl…

缓存数据一致性探究

缓存是一种较低成本提升系统性能的方式,自它面世第一天起就备受广大开发者的喜爱。然而正如《人月神话》中的那句经典的“没有银弹”中所说,软件工程的设计没有银弹。 就像每一次发布上线修复问题的同时,也极易引入新的问题,自缓存…

一文让你明白软件测试该怎样入门?

我认为入门软件测试需要四个方面的知识or技能,它们是:业务知识、职业素养、基础知识、技术知识。 职业素养是一切的根基,因为人在职场就必须拥有必要的职业素养,软件测试工程师也不例外。基础知识和技术知识是两大支柱&#xff0…

【正点原子STM32连载】 第二十九章 DMA实验 摘自【正点原子】STM32F103 战舰开发指南V1.2

1)实验平台:正点原子stm32f103战舰开发板V4 2)平台购买地址:https://detail.tmall.com/item.htm?id609294757420 3)全套实验源码手册视频下载地址: http://www.openedv.com/thread-340252-1-1.html 第二十…

第26节:cesium 高程数据下载(含源码+视频)

本节主要讲解高程dem数据下载方式 下载网址1: http://srtm.csi.cgiar.org/download 下载较慢,含全球高程数据 下载网站2:地理空间数据云 下载速度快,中国科学院计算机网络信息中心公布数据,正式可靠 下面主要介绍地理空间数据云的下载方式。 1.登录 2.选择高级检索 3.选择数…

【改进的多同步挤压变换】基于改进多同步挤压的高分辨率时频分析工具,用于分析非平稳信号(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

一份配置轻松搞定表单渲染,配置式表单渲染器在袋鼠云的实现思路与实践

前段时间,袋鼠云离线开发产品接到改造数据同步表单的需求。 一方面,数据同步模块的代码可读性和可维护性较差,导致在数据同步模块开发新功能和定位问题的效率很低。另一方面,整体规划上,希望在对接新的数据源时&…

Mac版好用虚拟机CrossOver22.1.1,耗时时间少,加快办事效率

Mac系统仅适配自己的硬件,它的软件需要通过app store购买,所以很多Mac用户也为之烦恼。这种模式优点是稳定性与性能超强发挥,缺点也显而易见。 那该如何解决这一困扰呢?一般,我们会选择安装虚拟机软件,但这…

本地使用AutoML-nni进行超参数调优实验

目的:在自己的代码中NNI工具,进行超参数自动调优训练自己的项目,得到精度最高的一组超参数。 nni地址: GitHub - microsoft/nni: An open source AutoML toolkit for automate machine learning lifecycle, including feature e…

短视频矩阵视频智能剪辑源代码.源代码

短视频矩阵视频智能剪辑: * 添加/编辑视频 */ public function addVideoAction(){ $this->useLayout(dydqtshoppc-head.html); $id $this->request->getIntParam(id); //获取视频信息 $Video_model new App_Mod…

c++包管理器,不用每次都源码编译

pkg-config linux中的包管理器 例如opencv.pc文件,详细描述了库的使用依赖。cmake的find_package支持pc文件的查找 prefix/usr/local exec_prefix${prefix} includedir/usr/local/include libdir/usr/local/libName: OpenCV Description: Open Source Computer Vi…

矿工挖宝-第14届蓝桥杯国赛Scratch真题初中级组第4题

[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第146讲。 矿工挖宝,本题是2023年5月28日上午举行的第14届蓝桥杯国赛Scratch图形化编程初中级组真题第4题&…

MySQL(进阶篇3.0)

锁 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算机资源(CPU、RAM、I/O)的争用之外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题&…

十五、实例化

第一部分 概念: 1)引入 OpenGL ES 实例化(Instancing)是一种只调用一次渲染函数就能绘制出很多物体的技术,可以实现将数据一次性发送给 GPU ,告诉 OpenGL ES 使用一个绘制函数,将这些数据绘制…

练习:有限状态机测试

练习:有限状态机测试 1 FSM 示例 在练习中,我们将使用两个 FSM。 两者都有输入字母 X {a, b} 和输出字母 Y {0,1}。 第一个 FSM 将称为 M1 并由以下有向图表示。 对于上面给出的每个 FSM Mi: 1.确定以下值,显示您的工作。 (a…

[MySQL]不就是SQL语句

前言 本期主要的学习目标是SQl语句中的DDL和DML实现对数据库的操作和增删改功能,学习完本章节之后需要对SQL语句手到擒来。 1.SQL语句基本介绍 SQL(Structured Query Language)是一种用于管理关系型数据库的编程语言。它允许用户在数据库中存…

AngularJs学习笔记--unit-testing

javascript是一门动态类型语言,这给她带来了很强的表现能力,但同时也使编译器几乎不能给开发者提供任何帮助。因为这个原因,我们感受到编写任何javascript代码都必须有一套强大完整的测试。angular拥有许多功能,让我们更加容易地测…

如何编写接口测试用例?测试工程师必备技能!

自动化始终只是辅助测试工作的一个手段,对于测试人员而言,测试基础和测试用例的设计才是核心。如果测试用例的覆盖率或者质量不高,那将这部分用例实现为自动化用例的意义也就不大了。 那么,接口测试用例应该怎么编写呢&#xff1f…

基于SpringBoot实现的分页查询(分分钟钟上手)

这里是使用的hibernate(不需要写sql)和springboot 也可使用 MyBatis&#xff08;推荐使用&#xff09; 下面是使用Spring Boot实现分页查询的示例&#xff1a; 在pom.xml文件中添加依赖项&#xff1a; <dependency><groupId>org.projectlombok</groupId>&l…