浅析linux中的信号

news2024/11/15 4:58:13

人们往往将信号称为“软件中断”,它提供了异步事件的处理机制,这些事件可以来自系统外部(如用户按下ctrl+c产生中断符),也可能来自程序或者内核内部的执行动作(如进程除零操作)。进程收到信号,就意味着某一事件或异常情况的发生。

信号的关键不仅在于事件的发生是异步的,而且程序对信号的处理也是异步的。信号处理函数在内核注册,收到信号时,内核从程序的其他部分异步调用信号处理函数。信号的生命周期比较明确:产生信号(也可以说是信号发出或者生成)、内核存储信号、内核发送信号、内核处理信号。

信号的类型很多,每一种分别标识不同的事件或情况。采用不同的整数来标识各种信号类型,

并以 SIGxxxx 形式的符号名加以定义。在头文件<signal.h>中,信号名都被定义为正整数常量(信号编号)。不存在编号为0的信号,Kill函数对信号编号0有特殊的应用(将信号发送给当前进程所属进程组中的所有进程),POSIX.1将此类信号编号称为空信号。

内核、其他进程(只要具有相应的权限)或进程自身均可向进程发送信号。例如,发生下列情况之一时,内核可向进程发送信号:用户键入中断字符(通常为 Control-C)、进程的子进程之一已经终止、由进程设定的定时器(告警时钟)已经到期、进程尝试访问无效的内存地址、在 shell 中,可使用 kill 命令向进程发送信号。在程序内部,系统调用 kill()可提供相同的功能。

收到信号时,进程会根据信号采取如下动作之一。

   1、忽略信号:大多数信号都可以按照这种方式进行处理,但是有两个特例,SIGKILL和SIGSTOP信号,这两种信号不能被忽略的原因是:它们向内核和超级用户提供了让进程终止或者停止的可靠方法。

    2、捕捉信号:为实现这点,需要通知内核在某种信号发生时,调用一个用户态的函数,在此函数中,可完成用户程序对信号所代表的事件的处理逻辑。注意不能捕捉SIGKILL和SIGSTOP信号。

    3、执行系统的默认操作:对每种信号的默认处理逻辑见下图,注意对大多数信号而言,系统的默认动作是终止该进程。

默认动作中,“终止+core”表示进程在当前工作目录的core文件中复制了该进程的内存映像(该文件名为core)。大多数UNIX系统调试程序都是用core文件检查进程终止时的状态。

参考:《Linux系统编程手册》、《Unix环境高级编程第三版》、《Linux系统编程第二版》

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

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

相关文章

老生常谈 - 从输入URL到页面加载的过程(详细版)

从输入URL到页面加载的过程 之前一直都是直接看一下总结的八股文章&#xff0c;对于实际的整个链路并不是特别熟悉&#xff0c;这次花了一天多的时间看了很多资料&#xff0c;对于整个页面加载的流程有了自己的理解&#xff0c;从前端开始访问的浏览器多线程、缓存等问题&#…

在华为昇腾开发板安装gdal-python

作者:朱金灿 来源:clever101的专栏 为什么大多数人学不会人工智能编程?>>> 在华为昇腾开发板安装gdal-python分为两步:编译gdal库和下载gdal对应的python包。 1.编译gdal库 首先下载gdal库,。在linux(arm架构)上编译的gdal库及其第三方库源码,内含一个编译…

100%纯血鸿蒙来了,Android程序员影响甚大

“纯血鸿蒙”来了&#xff01; 近日&#xff0c;美团、网易、今日头条、钉钉等多家互联网头部企业密集发布对鸿蒙系统相关人才的招聘信息&#xff0c;再度引爆市场对“纯血鸿蒙”的热议。 操作系统之“国货之光” 自2019年8月发布至今&#xff0c;鸿蒙系统已经更新到4.0版本…

为医药数据建起坚不可摧的堡垒——上海迅软DSE终端防泄密的力量!

某医药公司是一家综合性的医药产业公司&#xff0c;具有一定的规模和实力。其经营范围大范围&#xff0c;涉及到多个领域&#xff0c;包括药品、医药器械等的批发零售以及相关的互联网信息服务等。该公司在人员配置和知识产权方面也具备一定的优势&#xff0c;为其在医药产业的…

实验题【网关设置+VRRP+静态路由+OSPF】(H3C模拟器)

嘿&#xff0c;这里是目录&#xff01; ⭐ H3C模拟器资源链接1. 实验示意图2. 要求和考核目标3. 当前配置3.1 PC1、PC2、PC3、PC4和PC5配置3.2 SW配置3.2.1 SW2配置3.2.2 SW3配置3.2.3 SW4配置3.2.4 SW1配置 3.2. R配置3.2.1 R1配置3.2.2 R2配置 ⭐ H3C模拟器资源链接 H3C网络…

SQL常见函数整理 _ LAG() 向上偏移

1. 用法 窗口函数&#xff0c;用于访问窗口中当前行之前的行的数据。该函数可以根据需要计算当前行之前的值&#xff0c;使我们能够轻松地比较不同行之间的差异和变化。 2. 基本语法 LAG(column, offset, default_value) OVER (ORDER BY column)column&#xff1a;代表在返回…

【Django笔记】10大模块md文档第6篇:Django视图、Cookie和session状态、模板和过滤器

Django的主要目的是简便、快速的开发数据库驱动的网站。它强调代码复用&#xff0c;多个组件可以很方便的以"插件"形式服务于整个框架&#xff0c;Django有许多功能强大的第三方插件&#xff0c;你甚至可以很方便的开发出自己的工具包。这使得Django具有很强的可扩展…

H5ke12--2--学生选课表格的编辑

方法1不可以修改的用label,如何按了哪一行 就会在下面有个文本显示可编辑的一行 方法2每一行后面都有一个编辑, 3对每一个修改,每一个td失去焦点都会有,直接到达我们服务器 注意 如果用span的每一个html元素都可以自己定义属性 Data-属性名,data-Address links也要给为span 1…

当班主任工资会高一些吗?

很多人在选择职业的时候&#xff0c;都会考虑到工资这一方面。而班主任这个职业&#xff0c;往往被认为是一种高收入的工作。那么&#xff0c;班主任的工资真的会比其他科任老师高吗&#xff1f; 班主任除了教学任务之外&#xff0c;还要负责管理班级的日常事务&#xff0c;包括…

Python入门03变量

目录 1 什么是变量2 变量声明3 变量命名规则4 变量类型5 类型转换总结 1 什么是变量 编程语言中变量就像容器一样&#xff0c;可以用来存放东西 我的变量就像杯子一样&#xff0c;可以用来盛放各种饮料。在Python中变量用来存放各种各样的数据&#xff0c;比如整数、浮点数、…

transformer训练与推理

以下transformer基于中译英任务 数据集原本的目标语言标签dec添加完padding后&#xff0c; 如果在dec前面加一个S构成了dec_input&#xff0c;而如果在dec后面加一个E构成了dec_output(输出的标签) attention 有两种&#xff0c;self attention(encoder里面的是源语言输入句子…

基于Springboot的冬奥会科普平台(有报告),Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的冬奥会科普平台&#xff08;有报告&#xff09;&#xff0c;Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层…

jetson NX部署Yolov8

一,事情起因,由于需要对无人机机载识别算法进行更新,所以需要对yolov8算法进行部署到边缘端。 二,环境安装 安装虚拟环境管理工具,这个根据个人喜好。 我们需要选择能够在ARM架构上运行的conda,这里我们选择conda-forge 下载地址 安装即可 剩下的就是和conda 创建虚拟…

【Vue】vue指令

目录 V-html v-show和v-if v-show 显示 隐藏 v-if 显示 隐藏 总结 显示隐藏的应用场景 未登录的情况 登录的情况 v- else 和 v-else-if v-if 和v-else v-if 和 v-else-if 总结&#xff1a; v-on 语法一&#xff1a; 语法二&#xff1a; 调用传参 v-bind…

ruoyi-plus-vue部署

安装虚拟机 安装docker 安装docker 安装docker-compose 可能遇到的错误 Failed to deploy ruoyi/ruoyi-server:5.1.0 Dockerfile: ruoyi-admin/Dockerfile: Cant retrieve im age ID from build stream 安装 vim 命令 yum install vim -y 修改文件 vim /etc/resolv.conf …

1、Docker概述与安装

相关资源网站&#xff1a; ● docker官网&#xff1a;http://www.docker.com ● Docker Hub仓库官网: https://hub.docker.com/ 注意&#xff0c;如果只是想看Docker的安装&#xff0c;可以直接往下拉跳转到Docker架构与安装章节下的Docker具体安装步骤&#xff0c;一步步带你安…

set和map + multiset和multimap(使用+封装(RBTree))

set和map 前言一、使用1. set(1)、模板参数列表(2)、常见构造(3)、find和count(4)、insert和erase(5)、iterator(6)、lower_bound和upper_bound 2. multiset3. map(1)、模板参数列表(2)、构造(3)、modifiers和operations(4)、operator[] 4. multimap 二、封装RBTree迭代器原理R…

2023年P气瓶充装证模拟考试题库及P气瓶充装理论考试试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2023年P气瓶充装证模拟考试题库及P气瓶充装理论考试试题是由安全生产模拟考试一点通提供&#xff0c;P气瓶充装证模拟考试题库是根据P气瓶充装最新版教材&#xff0c;P气瓶充装大纲整理而成&#xff08;含2023年P气瓶…

云原生基础概述

云原生的理解 在云原生这个概念还没流行起来的时候&#xff0c;公司开发了一款应用&#xff0c;这是「原生应用」&#xff0c;一般来说传统部署应用的方式都是通过购买物理的服务器&#xff0c;然后将需要上线的项目部署到物理服务器中跑起来。而购买物理机器&#xff0c;还要…

指针运算详解

1.引入 指针的基本运算有三种&#xff0c;分别是&#xff1a; • 指针- 整数 • 指针-指针 • 指针的关系运算 2.指针- 整数 因为数组在内存中是连续存放的&#xff0c;只要知道第⼀个元素的地址&#xff0c;顺藤摸⽠就能找到后⾯的所有元素。 int arr[10] {1,2,3,4,5,…