linux(信号产生的各种方式)

news2024/11/24 9:45:37

目录:

         1.引入

         2.介绍系统支持的信号列表

         3.键盘方式产生信号

         4.程序中存在异常问题,产生信号

         5.系统调用产生信号

         6.软件条件也能产生信号

         7.任何理解OS给进程发送信号

1.引入

 我怎么证明ctrl+c是向指定进程发送了2号信号呢??

signal 函数作用是修改指定的一个信号

2.介绍系统支持的信号列表

kill  -l    查看系统所支持的信号列表

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

3.键盘方式产生信号

 信号的产生方式其中有一种就是通过键盘产生

 那么应该怎么终止后台进程呢??

 总结一般而言:进程收到信号的处理方案有3中情况

1.默认动作    ---- 一部分是终止自己,暂停等

2.忽略动作  -----  是一种信号处理的方式,只不过动作就是什么也不干

3.自定义动作(信号的捕捉)   ----  我们刚用我们signal方法,就是在修改信号的处理动作:默认  --》 自定义动作

 

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

4.程序中存在异常问题,导致我们收到信号退出

我们来做几个实验

既然进程已经崩溃了,进程为什么会崩溃呢??

 可是我们怎么证明我的程序崩溃是因为收到了11号信号呢??

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

 

 在win  or linux下进程崩溃的本质,是进程收到了对应的信号,然后进程执行信号的默认处理动作(杀死进程)

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

为什么我的进程会收到信号呢????

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

当进程崩溃的时候,你最想知道上面?????崩溃的原因 waitpid 中是status

当一个进程正常退出时,status次低八位,代表的是进程退出时的退出码,后低7位表示的是进程收到的信号

 也就是说崩溃的原因我们是可以通过status来得到的

你还想知道什么???在哪一行崩溃的!!!我得去解决啊

 为什么在我的计算机上没有见到 core dump这一项技术呢??原因是因为 默认在云服务器上,core dump这一项技术是被关掉的

 

 

 所以呢,相当于我的进程出现崩溃的情况,我们可以尝试着把我们的core dump这个选项打开,直接看崩溃的位置

怎么证明并不一定所有的信号都会形成 core dump文件

 

 所以不一定所有的信号都会形成core dump,但是只要你是信号终止的,status都会被设置

但是你有没有core dump文件是由core这个标志位决定!!!

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

可是我该证明验证我有没有core dump文件是由 core这个标志位决定的呢??

可是我想看的是core dump flag 标志位

 5.系统调用产生信号

kill   系统调用接口产生信号

 

 

 

此时我们就通过系统调用kill  产生信号!!!

kill是我要发信号给别人发

raise是我给自己发

abort 是给自己发送6号信号(给自己发送一个确定的信号)

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

 6.软件条件也能产生信号

调用alarm函数可以设定一个闹钟,也就是告诉内核在seconds秒之后给当前进程发送SIGALRM信号,该信号的默认处理动作是终止当前进程

这个函数的返回值是0(说明alarm是准点给当前进程发送信号的),要是没有准点发则返回值是设定闹钟时间还剩下的秒数

 我们来证明一下我们alarm的返回值

 

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

 7.任何理解OS给进程发送信号

我们目前理解的就是:

OS给进程发送信号  ---》 OS 发送信号数据给task_struct

如何理解OS给进程发送进程信号  --》 发送信号数据给  task_struct  --》 本质是OS向指定进程的task_struct 中的信号位图写入比特位1,即完成信号的发送  --》信号的写入

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

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

相关文章

5万字大数据实验室建设方案能源大数据中心建设方案word

本资料来源公开网络,仅供个人学习,请勿商用,如有侵权请联系删除篇幅有限,无法完全展示,喜欢资料可转发评论,私信了解更多信息。 大数据实验室建设方案 大数据实验室建设方案 目录 1概述 1.1建设背景 1.…

chatgpt赋能python:Python抓取数据:从入门到精通

Python抓取数据:从入门到精通 Python是当下最热门的编程语言之一,其强大的数据处理能力使得Python在数据抓取方面也越来越受欢迎。本文将从入门到精通介绍Python抓取数据的方法,希望对初学者有所帮助。 网络爬虫 网络爬虫是Python基于网络…

CG平台实验——线性回归

文章目录 练习1:线性回归介绍1 实现简单示例函数1.1 提交解决方案 2 单变量线性回归2.1 绘制数据2.2 梯度下降2.2.1 更新公式2.2.2 实现2.2.3 计算成本J(θ)2.2.4 梯度下降 2.3 可视化成本函数 选做练习3 多变量线性回归3.1 特征标准化3.2 梯度下降 练习1&#xff1…

chatgpt赋能python:Python在边框中写文字:优雅展示内容的方式

Python在边框中写文字:优雅展示内容的方式 当我们需要在网页上展示一些信息时,通常会使用边框来突出显示内容,然而,普通的边框可能会显得过于单调,缺少设计感,这时我们可以借助Python来实现一个功能强大的…

chatgpt赋能python:Python备份列表:从小白到大神,这里有你需要的一切

Python备份列表:从小白到大神,这里有你需要的一切 随着信息科技的发展,数字资料的价值越发具有现实意义,但是数据泄露、系统崩溃、病毒攻击、硬件故障等情况也时有发生。因此,对数据进行备份是非常必要的。Python作为…

Select选择器(antd-design组件库)简单使用以及增加搜索功能

1.Select选择器 下拉选择器。 2.何时使用 弹出一个下拉菜单给用户选择操作,用于代替原生的选择器,或者需要一个更优雅的多选器时。 当选项少时(少于 5 项),建议直接将选项平铺,使用 Radio 是更好的选择。 组…

chatgpt赋能python:Python如何倒序输出列表

Python如何倒序输出列表 Python是一种高级编程语言,自由、开源、跨平台,被广泛用于Web开发、数据分析、机器学习等领域。在Python中,列表是一种常见的数据结构,它允许存储多个元素,并支持索引、切片等操作。本文将介绍…

chatgpt赋能python:Python如何保存文件-最全面的指南

Python如何保存文件 - 最全面的指南 Python是一种强大的编程语言,它在处理文本文件、CSV文件、Excel文件、图像文件和PDF文件等方面表现出色。然而,如何在Python中保存这些文件,对于初学者来说可能会有些棘手。在本篇文章中,我们…

自建极简Ethercat主站-底层驱动编写

1、简介 MECM(Mini Ethercat Master),名字随便起的。已经学习了一段时间的Ethercat总线了,目前的想法就是自己简单实现一个Ethercat主站,没有太多的冗余功能,暂时不考虑太多的容错机制,仅实现目前用到的FO…

chatgpt赋能python:Python奇偶求和:简单实用的算法

Python奇偶求和:简单实用的算法 Python作为一门高级编程语言,不仅适用于数据分析及科学计算领域,也可用于日常生活中的实用问题。例如,人们常常需要对一个整数序列中的奇数和偶数进行求和,以便了解各自的总数或者对它…

【软件测试】测试经验:IT 软件测试技术系统化学习方法

目录 一、IT 软件测试技术的介绍 (1)相关职称证书 ① 「中级」软件评测师 ②「高级」项目管理师 (2)背景 (3)作用 (4)行业应用 (5)技术概况 二、…

ES数据库介绍

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 目录 前言 一、ES(ElasticSearch)是什么? 二、ES的使用场景 三、ES的特点 四、ES和传统数据库对比 总结 前言 今天项目通过python用到了ES数据库…

ubuntu22.04安装docker

1、卸载旧版本(如果有的话) sudo apt-get remove docker docker-engine docker.io containerd runc 2、 添加 Docker 的官方 GPG 密钥 curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add - 3、设置稳定版仓库 …

python+vue健身房会员管理系统97s0t

健身管理系统根据需求分析,分为多个角色模块,分别为普通管理员和超级管理员模块,其中健身俱乐部普通管理员和健身俱乐部超级管理员都可以使用,不同角色登录显示不同的权限功能。本健身房管理系统管理员,会员&#xff0…

二叉树part7 | ● 530.二叉搜索树的最小绝对差 ● 501.二叉搜索树中的众数 ● 236. 二叉树的最近公共祖先

文章目录 530.二叉搜索树的最小绝对差思路代码困难 501.二叉搜索树中的众数思路官方题解代码困难 236. 二叉树的最近公共祖先思路代码困难 今日收获 530.二叉搜索树的最小绝对差 530.二叉搜索树的最小绝对差 思路 题目中要求在二叉搜索树上任意两节点的差的绝对值的最小值。…

51小车测速及OLED显示速度

1.小车测速 用途:广泛用于电机转速检测,脉冲计数,位置限位等。有遮挡,输出高电平;无遮挡,输出低电平接线 VCC 接电源正极3.3-5V GND 接电源负极 DO TTL开关信号输出 AO 此模块不起作用 测试原理和单位换算 轮子走一…

Springboot常见注解总结

给实体类使用该注解,结合后续的EXCEL工具类进行使用,能加快开发过程中关于文件导入的需求 文章目录 目录 前言 1. Excel注解 2. Annotation注解 3. Retention注解 4. Target注解 4. Document注解 5.Inherited注解 5.RestController注解 6.swagger注解(AP…

《10.21作业修正》

【一】 cookie概念解析:cookie是一种保存在客户端的小型文本文件,用于保存服务器通过set-cookie字段返回的数据,在下次请求服务器道德时候通过cookie字段将内容返回发送给服务器,是http进行客户端维护的一中方式,并且c…

Mycat中间件综合部署高可用-读写分离-分库分表(1.6)

Mycat中间件综合部署(1.6) 实施拓扑 一,环境搭建 1.服务分配 主机服务192.168.2.1MySQL-cluster-1192.168.2.2MySQL-cluster-2192.168.2.3Mycat 2.MySQL-cluster1分配 server-id端口角色13306master123307slave133308master243309slave2…

c语言中字符串比较的库函数是什么

说起比较运算&#xff0c;肯定第一时间想到了C语言中关于比较的相关运算符 “>、<、&#xff01;、>、<、”&#xff0c;那么要比较两个字符串是否相等是不是直接用“”比较就行了。下面就来看看这种方法行不行&#xff1f; 先看一个例子 void main( void ) {cha…