信号的学习笔记二

news/2024/4/29 17:48:47/文章来源:https://blog.csdn.net/qq_30255657/article/details/131946519

文章目录

    • 信号捕捉signal
    • 信号捕捉sigaction
    • 信号集
      • 未决信号集和阻塞信号集的工作过程 ![在这里插入图片描述](https://img-blog.csdnimg.cn/b896346af6f1462089779e513a7e237b.png)
      • 信号集相关函数
        • sigemptyset
        • sigfillset
        • sigaddset
        • sigdelset
        • sigismember
        • 应用
      • 以下函数设置内核信号集
        • sigprocmask
        • sigpending
        • 应用
    • 信号捕捉函数sigaction
        • 应用
    • 信号捕捉过程
    • SIGCHLD信号
    • 僵尸进程的解决
      • 一个SIGCHLD信号处理一个僵尸进程问题:
        • watipid使用
      • 没有注册玩完信号捕捉就出现信号时,会出现段错误

信号捕捉signal

在这里插入图片描述

为什么SIGKILL和SIGSTOP不能被捕捉也不能被忽略?
SIGKILL:无条件终止进程
SIGSTOP:停止进程的执行,
编号分别为9、19.
假如能够捕捉这两个信号,捕捉之后不进行任何操作,不忽略,然后进程会一直运行,无法停止,所以需要他们不能被捕捉,不能被忽略。

信号捕捉sigaction

信号集

在这里插入图片描述
阻塞信号可以通过系统调用修改,未决信号集无法修改。

在这里插入图片描述
两个信号集是两个64位的整形数据,采用位图机制实现。

未决信号集和阻塞信号集的工作过程 在这里插入图片描述

信号集相关函数

以下函数,仅能用于自定义信号集:

sigemptyset

在这里插入图片描述

sigfillset

在这里插入图片描述

sigaddset

在这里插入图片描述

sigdelset

在这里插入图片描述

sigismember

在这里插入图片描述

应用

仅能用于自定义信号集。
在这里插入图片描述
没有就是不阻塞,添加信号到信号集中,通过判断就是阻塞。
在这里插入图片描述
在这里插入图片描述

输出结果:
创建清空后——判断信号为——不阻塞
添加信号后——判断信号为——阻塞
删除信号后——判断信号为——不阻塞

以下函数设置内核信号集

sigprocmask

在这里插入图片描述在这里插入图片描述

sigpending

在这里插入图片描述

应用

//获取当前的未决信号集的数据
在这里插入图片描述

信号捕捉函数sigaction

在这里插入图片描述
在这里插入图片描述

应用

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

运行结果:
在这里插入图片描述

信号捕捉过程

在这里插入图片描述
在执行回调函数时,是阻塞函数,不会被再一次的信号打断,而是在回调函数执行完成之后才进行新信号的捕捉。
未决信号不支持排队,仅能存一个信号,多余信号直接忽略掉。

  1. 信号捕捉处理过程中使用临时阻塞信号集,信号处理完成后恢复使用内核阻塞信号集
  2. 回调函数阻塞
  3. 内核信号集不支持排队

SIGCHLD信号

在这里插入图片描述
由内核发送给父进程,父进程默认不处理。可以用该信号解决僵尸进程的问题

僵尸进程的解决

  1. 捕捉子进程发送的SIGCHLD信号——sigaction函数+sigaction结构体(临时阻塞信号集清空)
  2. 采用wait/waitpid函数对子进程收回

一个SIGCHLD信号处理一个僵尸进程问题:

存在问题:多个子进程同时结束的问题,由于无排列队列,同时只能处理1个
解决问题:采用循环判断,每次释放多个僵尸进程

watipid使用

参数:
—— -pid
<-1:释放 取反进程组的所有子进程
-1: 释放 所有子进程
0 : 释放 当前进程组的所有子进程
>0:释放 某指定ID的进程
释放僵尸进程
—— -传出参数
NULL
—— -操作
WNOHANG:非阻塞
WUNTRACED:停止的子进程会进行处理
WCONTINUED:被停止的子进程通过SIGCONT恢复后也会处理
在这里插入图片描述

没有注册玩完信号捕捉就出现信号时,会出现段错误

在这里插入图片描述
、、、信号注册

在这里插入图片描述

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

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

相关文章

流数据湖平台Apache Paimon(二)集成 Flink 引擎

文章目录 第2章 集成 Flink 引擎2.1 环境准备2.1.1 安装 Flink2.1.2 上传 jar 包2.1.3 启动 Hadoop2.1.4 启动 sql-client 2.2 Catalog2.2.1 文件系统2.2.2 Hive Catalog2.2.3 sql 初始化文件 2.3 DDL2.3.1 建表2.3.2 修改表 2.4 DML2.4.1 插入数据2.4.2 覆盖数据2.4.3 更新数据…

PHP使用Redis实战实录1:宝塔环境搭建、6379端口配置、Redis服务启动失败解决方案

宝塔环境搭建、6379端口配置、Redis服务启动失败解决方案 前言一、Redis安装部署1.安装Redis2.php安装Redis扩展3.启动Redis 二、避坑指南1.6379端口配置2.Redis服务启动&#xff08;1&#xff09;Redis服务启动失败&#xff08;2&#xff09;Redis启动日志排查&#xff08;3&a…

JS-----数据结构与算法(2)

目录 三. 栈结构 1.认识栈结构 2. 封装栈结构 3. 应用 3-1 十进制转二进制 3-2 进制转换法 四. 队列 1.队列是什么&#xff1f; 2.队列的封装 3. 队列的应用-击鼓传花 4. 双端队列 5.判断是否为回文 三. 栈结构 1.认识栈结构 栈&#xff08;stack&#xff09;又…

7.29训练总结

CodeForces - 1609E 这种使得整个串不包含子串’abc’的题目&#xff0c;发现可以用线段树维护 #include<bits/stdc.h> using namespace std; const int maxn1e55; #define lson now<<1 #define rson now<<1|1 struct seg {int a,b,c;int ab,bc,abc; }tr[m…

2023 年还推荐报计算机专业吗?

计算机科学是一个很好的专业&#xff0c;因为它由各种课程组成&#xff0c;为学生在成熟和新兴专业就业做好准备。以下是一些通常属于计算机科学专业的课程&#xff1a; 基本编程介绍了用于构建和维护数字架构和基础设施的编程语言和标准。 微积分为制定高级计算和设计概念提供…

eclipse 最新版没有navigator视图如何解决

使用project exploere视图可以显示类似navigator视图 1.显示project exploere视图 window---->show view --->project exploere 2.project exploere视图转换为类似navigator视图 第一步&#xff1a;点击视图右上角三个点或者倒三角&#xff0c;点击fiters and custom…

蓝图节点编辑器

打印字符串 第02章 蓝图结构 03 -注释和重新路由_哔哩哔哩_bilibili 第02章 蓝图结构 04 - 变量_哔哩哔哩_bilibili 第03章 蓝图简易门 01 - 箱子碰撞_哔哩哔哩_bilibili 第03章 蓝图简易门 02 - 静态Mesh和箭头_哔哩哔哩_bilibili 第03章 蓝图简易门 03 - 设置相对旋转节点_哔…

rocketmq rsqldb 简单记录

GitHub 地址 https://github.com/alibaba/rsqldb/tree/main&#xff0c;是和目前stream sql化看齐的Rocketmq的sql&#xff0c;类似还有kafka的sqlDB 和flink sql。 目前版本0.2 &#xff0c;主要提供rest模式调用&#xff0c;controller类为public class RsqlController支持的…

6G内存运行Llama2-Chinese-7B-chat模型

6G内存运行Llama2-Chinese-7B-chat模型 Llama2-Chinese中文社区 第一步&#xff1a; 从huggingface下载 Llama2-Chinese-7b-Chat-GGML模型放到本地的某一目录。 第二步&#xff1a; 执行python程序 git clone https://github.com/Rayrtfr/llama2-webui.gitcd llama2-web…

儿童居家健身好伙伴,小莫计数摸高训练器

现在的孩子们的越来越不喜欢运动了&#xff0c;总是爱玩手机游戏&#xff0c;对他们的身体健康非常不好&#xff0c;作为家长&#xff0c;我们希望能够给孩子提供更多的运动机会&#xff0c;有必要每天准备一些能让他们活动活动手脚的小游戏&#xff0c;让他们每天有足够的运动…

Pytorch个人学习记录总结 10

目录 优化器 优化器 官方文档地址&#xff1a;torch.optimhttps://pytorch.org/docs/stable/optim.html Debug过程中查看的grad所在的位置&#xff1a; model --> Protected Atributes --> _modules --> ‘model’ --> Protected Atributes --> _modules -…

【matlab】机器人工具箱快速上手-动力学仿真(代码直接复制可用)

动力学代码&#xff0c;按需修改参数 各关节力矩-关节变量的关系曲线&#xff1a; %%%%%%%%SCARA机器人仿真模型 l[0.457 0.325]; L(1) Link(d,0,a,l(1),alpha,0,standard,qlim,[-130 130]*pi/180);%连杆1 L(2)Link(d,0,a,l(2),alpha,pi,standard,qlim,[-145 145]*pi/180);%连…

小学期笔记——天天酷跑1

文件快照&#xff08;File snapshot&#xff09;通常是指对文件系统中某个特定时间点的文件或文件夹的快照或副本。它记录了文件或文件夹在某一时刻的状态&#xff0c;包括文件的内容、属性、权限、位置等信息。 文件快照通常用于数据备份、恢复和版本控制等目的。通过捕捉文件…

关于c++中虚函数和虚函数表的创建时机问题

以这段代码为例。 #include <iostream>using namespace std;class Parent { public:Parent(){}virtual void func1() {};virtual void func2() {}; };class Child :public Parent { public:Child():n(0),Parent(){cout << "Child()" << endl;}vir…

【网络原理】 (1) (应用层 传输层 UDP协议 TCP协议 TCP协议段格式 TCP内部工作机制 确认应答 超时重传 连接管理)

文章目录 应用层传输层UDP协议TCP协议TCP协议段格式TCP内部工作机制确认应答超时重传 网络原理部分我们主要学习TCP/IP协议栈这里的关键协议(TCP 和 IP),按照四层分别介绍.(物理层,我们不涉及). 应用层 我们需要学会自定义一个应用层协议. 自定义协议的原因? 当前的软件(应用…

轮趣科技教育版ros小车键盘控制运动

我之前买的ros小车是单独买的底板&#xff0c;以为随便一个树莓派就可以&#xff0c;因为我以前有一个树莓派3B&#xff0c;后来买了单独的小车之后&#xff0c;发现只能使用树莓派4B&#xff0c;然后又单独买了一个树莓派4B&#xff0c;给装上镜像&#xff0c;安装ros-melodic…

基于因果关系知识库的因果事件图谱构建、文本预处理、因果事件抽取、事件融合等

项目设计集合&#xff08;人工智能方向&#xff09;&#xff1a;助力新人快速实战掌握技能、自主完成项目设计升级&#xff0c;提升自身的硬实力&#xff08;不仅限NLP、知识图谱、计算机视觉等领域&#xff09;&#xff1a;汇总有意义的项目设计集合&#xff0c;助力新人快速实…

IntersectionObserver实现小程序长列表优化

IntersectionObserver实现小程序长列表优化 关于 IntersectionObserver 思路 这里以一屏数据为单位【一个分页的10条数据&#xff0c;最好大于视口高度】&#xff0c; 监听每一屏数据和视口的相交比例&#xff0c;即用户能不能看到它 只将可视范围的数据渲染到页面上&#x…

基于注解的 SpringMVC

SpringMVC SpringMVC使用SpringMVC的两个配置EnableWebMVC 和 ACWACSpringMVC执行流程接收请求参数Postman 发包工具&#xff08;&#xff09;get 请求---简单类型数据&#xff08;基本数据类型和String&#xff09;get 请求---对象类型数据get 请求---数组类型get 请求 --- 集…

Codeforces Round 886 (Div. 4)F题解

文章目录 [We Were Both Children](https://codeforces.com/contest/1850/problem/F)问题建模问题分析1.分析到达的点与跳跃距离的关系2.方法1倍数法累计每个点所能达到的青蛙数代码 方法2试除法累计每个点能到达的青蛙数代码 We Were Both Children 问题建模 给定n个青蛙每次…