进程间通信-信号概述

news2025/1/11 9:56:34

一、信号的概念

        信号是一种进程间通信的机制,用于在软件层面上对异步事件进行通知。信号通常是由操作系统或其他进程发送给目标进程的一种通知,以指示发生了某种事件或条件。这样的事件可能包括硬件异常、用户输入、定时器到期、子进程状态变化等。

引发内核为进程产生信号的各类事件如下:
对于前台进程,用户可以通过输入特殊的终端字符来给它发送信号。比如输入 Ctrl+C
通常会给进程发送一个中断信号。
硬件发生异常,即硬件检测到一个错误条件并通知内核,随即再由内核发送相应信号给
相关进程。比如执行一条异常的机器语言指令,诸如被 0 除,或者引用了无法访问的
内存区域。
系统状态变化,比如 alarm 定时器到期将引起 SIGALRM 信号,进程执行的 CPU
时间超限,或者该进程的某个子进程退出。
运行 kill 命令或调用 kill 函数。

二、使用信号目的

  1. 让进程知道已经发生了一个特定的事情: 信号是一种通知机制,用于通知进程发生了特定的事件或条件。这可以是用户输入、硬件异常、定时器到期等。进程在收到信号后可以采取相应的行动。

  2. 强迫进程执行它自己代码中的信号处理程序: 进程可以为特定信号注册信号处理函数。当进程接收到相应信号时,会执行与该信号关联的处理函数,从而允许进程采取定制的行动来应对信号

三、 信号特点

  • 简单: 信号是一种轻量级的通信机制,它们提供了一种快速的方式来通知进程发生了某个事件,而不需要复杂的通信协议。

  • 不能携带大量信息: 信号通常只能携带有关事件的少量信息。它们不适用于传递大块的数据。

  • 满足某个特定条件才发送: 信号通常在某个条件满足时才会被发送,例如按下特定的键盘组合、硬件异常等。

  • 优先级比较高: 信号通常有不同的优先级,某些信号可能具有比其他信号更高的紧急性,例如强制终止信号(SIGKILL)。

  • 在Unix中,可以使用命令kill -l来列出系统定义的信号,以及它们的编号。前31个信号是常规信号,而其余的是实时信号。

 四、信号

 五、信号五种默认动作以及三种状态

默认处理动作:

  1. Term(终止进程): 进程会被正常终止。
  2. Ign(忽略信号): 进程会忽略掉这个信号,不做任何响应。
  3. Core(终止进程,并生成一个core文件): 进程会被终止,并在当前工作目录生成一个核心转储文件(core dump)。
  4. Stop(暂停当前进程): 进程会被暂停,等待被其他信号唤醒。
  5. Cont(继续执行当前被暂停的进程): 如果进程之前被暂停,使用该信号可以继续执行。

信号的几种状态:

  1. 产生: 信号从发出源处产生,但尚未传递给接收者。
  2. 未决: 信号已经发出并且到达了接收者,但接收者尚未处理它。
  3. 递达: 信号已被接收者处理。

关于SIGKILL和SIGSTOP的特殊性:

  • SIGKILL(终止信号)SIGSTOP(暂停信号) 是两个特殊的信号,它们不能被捕捉(handled)、阻塞(blocked)或者忽略(ignored),只能执行默认动作。这是为了确保系统管理员能够终止或暂停进程,而进程无法阻止或忽略这些操作。

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

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

相关文章

C# OpenCvSharp 实现迷宫解密

效果 项目 代码 using OpenCvSharp; using System; using System.Drawing; using System.Windows.Forms;namespace OpenCvSharp_实现迷宫解密 {public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e…

Python实现AES算法和国密SM4算法

本文主要介绍使用AES加密算法的Python实现和shell脚本实现、SM4国密算法的Python实现。Python使用pycryptodome实现AES加解密、使用GmSSL实现SM4加解密算法;Shell脚本使用openssl实现AES加解密,详细见下文。 1、Python实现加密和解密 1.1 Python实现AES…

最新AI创作系统源码ChatGPT网站源码V2.6.3/支持Midjourney绘画/支持OpenAI GPT全模型+国内AI全模型

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统,支持OpenAI GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作Chat…

《人间失格》阅读笔记

《人间失格》读书笔记 2023年10月7日读完,在过去的三个月时间内,有忙碌申博、从杭州辞职回家、准备入学、到澳门入学的事情,终于忙完了这些所有事情,回到了横琴的小房子里读完了这本书。 这本书前半部分讲了主角,作为…

香港Web3.0生态现状

目前香港Web3.0生态正在快速发展。香港政府和金融机构正在积极推动Web3.0生态的建设,以推动数字经济和智慧城市的发展。香港政府已经发布了有关虚拟资产发展的政策宣言,鼓励和监管并重,加大力度推动虚拟资产产业向前发展。同时,香…

【用unity实现100个游戏之14】Unity2d做一个建造与防御类rts游戏

前言 欢迎来到本次教程,我将为您讲解如何使用 Unity 引擎来开发一个建造与防御类 RTS(即实时战略)游戏。 在本教程中,我们将学习如何创建 2D 场景、设计 2D 精灵、制作 2D 动画、响应用户输入、管理游戏数据、以及其他有关游戏开…

聊聊分布式架构——BIO到NIO的演进

目录 I/O I/O模型 BIO示例 BIO与NIO比较 NIO的三大核心 NIO核心之缓冲区 Buffer常用子类: Buffer常用API Buffer中的重要概念 NIO核心之通道 FileChannel 类 FileChannel常用方法 NIO核心之选择器 概述 应用 NIO非阻塞原理分析 服务端流程 客户端…

【Java8】线程问题排查分析

文章目录 thread dump简介JDK 工具jstackjattachjvisualvm Java程序CPU消耗较高,怎么快速看出是那个线程导致的呢?我们可以使用命令 jstack/jattach来快速定位问题 thread dump简介 thread dump 是 Java 进程的所有线程状态的快照。每个线程的状态都通过…

java基础-第1章-走进java世界

一、计算机基础知识 常用的DOS命令 二、计算机语言介绍 三、Java语言概述 四、Java环境的搭建 JDK安装图解 环境变量的配置 配置环境变量意义 配置环境变量步骤 五、第一个Java程序 编写Java源程序 编译Java源文件 运行Java程序 六、Java语言运行机制 核心机制—Java虚拟机 核…

【LeetCode高频SQL50题-基础版】打卡第2天:第11-15题

文章目录 【LeetCode高频SQL50题-基础版】打卡第2天:第11-15题⛅前言 员工奖金🔒题目🔑题解 学生们参加各科测试的次数🔒题目🔑题解 至少有5名直接下属的经理🔒题目🔑题解 确认率🔒题…

tcpdump(二)命令行参数讲解(一)

一 tcpdump实战详解 1、我们做抓包,一般都需要指定条件,保证对系统的CPU、内存、磁盘资源不会产生过大的响应备注: 遇到过tcpdump持续抓包导致系统挂了2、条件:1) tcpdump的 基础命令选项参数2) 真正的 过滤条件 ① 参数学习思路 思路:…

Window Anaconda 安装pytorch 启用cuda 终究手段

1.首先你的电脑要有NVIDIA 的显卡.没有就走吧,你如果不是window ,也走吧,不一定教程管用。 2.然后要明白,有两种CUDA版本,一个叫运行时api,一个是驱动api 2.1 运行时cuda 版本查看 (是你跑深度学习模型或其…

关于 Vue-iClient-MapboxGL 的使用注意事项

官网:https://iclient.supermap.io/web/apis/vue/zh/api/guide/installation.html 关于图的使用,其余的引入步骤不再赘述,仅说注意事项。 推荐使用的是全局引入,也就是完整引入 因为单独引入我踩了不少坑,比如说 cs…

swoole进行性能查看火焰图tideways_xhprof xhgui

D:\dnmp\services\php\Dockerfile D:\dnmp\services\php\php.ini 在php的配置文件里面增加tideways_xhprof拓展: [xhprof] ;xhprof.output_dir /var/log/php/xhprof.logextensiontideways_xhprof.so在php配置文件里面加上xhgui的header: 这样就能开启…

golang 编译器 汉化

1、找到左上角file选项,点击选中settings进行单机 2、找到settings中找到plugins选中进行点击 3、再框中输入chinese进行搜索,出结果后找到如下图所示,点击进行安装 4、安装完成后进行重启ide,完美解决

Docker linux 安装

sudo yum update sudo yum clean all sudo yum makecache#安装依赖 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 #添加官方存储库 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo#安装-跳过一些异常依赖…

计算机视觉: 基于隐式BRDF自编码器的文生三维技术

论文链接: MATLABER: Material-Aware Text-to-3D via LAtent BRDF auto-EncodeR 背景 得益扩散模型和大量的text - image 成对的图片, 现在文生2D的模型已经比较成熟的框架和模型,主流的技术比如说stable diffusion 和 midjourney 以及工业领域runway 等…

Idea下面git的使用:变基、合并、优选、还原提交、重置、回滚、补丁

多分支和分支切换 变基和合并 变基是把本项目的所有提交都列出来按顺序一个个提交到目标分支上去 而合并是把两个分支合并起来,但是旧的分支还是可以启动其他分支,在旧的分支上继续开发 master: A -- B -- C -- M/ feature: D -- Emaster: A -…

2023全新小红书图集和视频解析去水印网站源码

2023全新小红书图集和视频解析去水印网站源码 小红书视频图集解析网站源码,在红书看到好看的图片以及好看的头像,但是直接下载又有水印就非常难受,这个可以一键解析去除水印,支持统计解析次数,本地接口。 源码下载&a…

大厂秋招真题【BFS+DP】华为20230921秋招T3-PCB印刷电路板布线(留学生专场)

华为20230921秋招T3-PCB印刷电路板布线(留学生专场) 题目描述与示例 题目描述 在PCB印刷电路板设计中,器件之间的连线,要避免线路的阻抗值增大,而且器件之间还有别的器任和别的干扰源,在布线时我们希望受…