信号的学习笔记二

news2024/11/16 17:43:21

文章目录

    • 信号捕捉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.coloradmin.cn/o/807596.html

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

相关文章

上传图片到腾讯云对象存储桶cos 【腾讯云对象存储桶】【cos】【el-upload】【vue3】【上传头像】【删除】

1、首先登录腾讯云官网控制台 进入对象存储页面 2、找到跨越访问CIRS设置 配置规则 点击添加规则 填写信息 3、书写代码 这里用VUE3书写 第一种用按钮出发事件形式 <template><div><input type="file" @change="handleFileChange" /&…

[NLP]LLM高效微调(PEFT)--LoRA

LoRA 背景 神经网络包含很多全连接层&#xff0c;其借助于矩阵乘法得以实现&#xff0c;然而&#xff0c;很多全连接层的权重矩阵都是满秩的。当针对特定任务进行微调后&#xff0c;模型中权重矩阵其实具有很低的本征秩&#xff08;intrinsic rank&#xff09;&#xff0c;因…

labelme标签格式json转化成yolov8支持是数据集格式

我们用yolov8做实例分割时&#xff0c;需要制作标签&#xff0c;如果用labelme做&#xff0c;不能直接用模型训练&#xff0c;需要利用一个脚本文件进行转换。 import base64 import random import shutil from tqdm import tqdm import math import json import os import nu…

5.2.12.读写接口实践 copy_from_user copy_to_user

5.2.12.读写接口实践 5.2.12.1、完成write和read函数 (1)copy_from_user函数的返回值定义&#xff0c;和常规有点不同。返回值如果成功复制则返回0&#xff0c;如果 不成功复制则返回尚未成功复制剩下的字节数。 copy_from_user 函数&#xff1a;static inline unsigned long _…

【业务功能篇59】Springboot + Spring Security 权限管理 【下篇】

UserDetails接口定义了以下方法&#xff1a; getAuthorities(): 返回用户被授予的权限集合。这个方法返回的是一个集合类型&#xff0c;其中每个元素都是一个GrantedAuthority对象&#xff0c;表示用户被授予的权限。getPassword(): 返回用户的密码。这个方法返回的是一个字符…

第十二章:priority_queue类

系列文章目录 文章目录 系列文章目录前言priority_queue的介绍priority_queue的使用容器适配器什么是容器适配器STL标准库中stack和queue的底层结构 总结 前言 priority_queue是容器适配器&#xff0c;底层封装了STL容器。 priority_queue的介绍 priority_queue文档介绍 优先…

路由器工作原理

路由器原理 路由概述 路由&#xff1a;跨越从源主机到目标主机的一个互联网络来转发数据包的过程。&#xff08;为数据包选择路径的过程&#xff09; 作用&#xff1a;路由器是连接不同网段的。 转发依据&#xff1a; 路由表&#xff1a;路径选择全看路由表&#xff0c;根…

大数据课程D5——hadoop的Sink

文章作者邮箱&#xff1a;yugongshiyesina.cn 地址&#xff1a;广东惠州 ▲ 本章节目的 ⚪ 掌握Sink的HDFS Sink&#xff1b; ⚪ 掌握Sink的Logger Sink&#xff1b; ⚪ 掌握Sink的File Roll Sink&#xff1b; ⚪ 掌握Sink的Null Sink&#xff1b; ⚪ 掌握Si…

【前端知识】React 基础巩固(三十六)——RTK中的异步操作

React 基础巩固(三十六)——RTK中的异步操作 一、RTK中使用异步操作 引入RTK中的createAsyncThunk&#xff0c;在extraReducers中监听执行状态 import { createSlice, createAsyncThunk } from "reduxjs/toolkit"; import axios from "axios";export cons…

<MySQL> Centos 7环境安装MySQL

Centos 7环境安装MySQL 1.卸载不要的环境 停止MySQL服务 systemctl stop mariadb.service systemctl stop mysqld禁止MySQL服务开机自启 systemctl disable mysqld卸载MySQL软件包 yum remove mysql-server mysql-client删除MySQL数据目录 rm -rf /var/lib/mysql清理MySQ…

福特汽车在全球电动汽车市场的主导地位正在不断扩大

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 2023年7月27日&#xff0c;美国最大的汽车巨头之一福特汽车(F)公布了其2023年第二季度财报。 2023年7月6日&#xff0c;福特汽车宣布&#xff0c;第二季度美国市场的汽车销量已经较2023年第一季度增长了11.7%&#xff0c;令…

机器人状态估计:robot_localization 功能包高级参数详解

机器人状态估计&#xff1a;robot_localization 功能包高级参数详解 前言功能包简介相关参数高级参数 前言 移动机器人的状态估计需要用到很多传感器&#xff0c;因为对单一的传感器来讲&#xff0c;都存在各自的优缺点&#xff0c;所以需要一种多传感器融合技术&#xff0c;将…

微信朋友圈跟圈怎么设置?

朋友圈跟发功能对需要进行朋友圈营销或微信营销的公司和个体创业者的帮助极大。通常情况下&#xff0c;这些创业者或企业会管理多个微信账号来协同运营和管理客户资源&#xff0c;也就是俗称的“大号”和“小号”。如果没有朋友圈跟发软件&#xff0c;客户需要依次使用大号来发…

141. 环形链表

简单 1.9K 相关企业 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整数 pos 来表示链表尾连接到链…

十九章:利用跨图像语义挖掘进行弱监督语义分割

0.摘要 本文研究了仅使用图像级别监督进行语义分割学习的问题。目前流行的解决方案利用分类器的对象定位图作为监督信号&#xff0c;并努力使定位图捕捉更完整的对象内容。与之前主要关注于图像内部信息的努力不同&#xff0c;我们着眼于跨图像语义关系在全面对象模式挖掘中的价…

冯诺依曼体系的认识、来源、原理、组成、功能和特点

目录 一.认识冯诺依曼 二.冯诺依曼体系结构的来源 三.冯诺依曼体系结构计算机 3.1工作原理 3.2组成部件 3.3功能和特点 &#x1f381;个人主页&#xff1a;tq02的博客_CSDN博客-C语言,Java,Java数据结构领域博主 &#x1f3a5; 本文由 tq02 原创&#xff0c;首发于 CSDN&…

股票回购不积极,遭分析师看空,汽车之家财务前景黯淡

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 第一季度财报后股价表现不佳 汽车之家&#xff08;ATHM&#xff09;于2023年5月11日公布了2023年第一季度业财报绩。 猛兽财经通过查询财报得知&#xff0c;汽车之家第一季度的实际营收为2.21亿美元&#xff0c;正常每股收…

java可变字符序列:StringBuffer、StringBuilder

文章目录 StringBuffer与StringBuilder的理解StringBuilder、StringBuffer的API StringBuffer与StringBuilder的理解 因为String对象是不可变对象&#xff0c;虽然可以共享常量对象&#xff0c;但是对于频繁字符串的修改和拼接操作&#xff0c;效率极低&#xff0c;空间消耗也…

【算法训练营】Fibonacci数列+合法括号序列判断+两种排序方法

7.29 Fibonacci数列题目解析代码 合法括号序列判断题目题解代码 两种排序方法题目&#xff1a;题解代码 Fibonacci数列 题目 题目链接: 点击跳转 解析 【题目解析】&#xff1a; 本题是对于Fibonacci数列的一个考察&#xff0c;Fibonacci数列的性质是第一项和第二项都为1&am…

Segmentation fault 利用 core.xxx文件帮助你debug

在没有get到本文介绍的技能之前的时候&#xff0c;以前遇到程序发生了 Segmentation fault 时&#xff0c;也是一筹莫展&#xff0c;看到伴随程序崩溃而生成的 core.xxxx 文件时&#xff08;有时会生成&#xff0c;有时不会生成&#xff0c;留着下面介绍&#xff09;&#xff0…