Linux之信号

首先我们来了解一下信号的概念!

我们可以以上红框中的4个特点。

进程分为前台和后台进程,前台进程只有一个,后台进程可以有多个!(并且后台进程不能用ctrl+c中止,只能用kill -9去杀掉)

jobs可以看作业标识号!

(ctrl+z可以暂停进程,不能暂停前台进程,如果暂停就会被挂起到后台)

fg +作业标识号可以将后台提到前台,bg +作业标识号可以将一个暂停的任务在后台重新继续执行

启动后台进程的方法就是./xxx &再启动的时候后面加上&就可以了!

然后我们再来研究一个问题:操作系统怎么知道键盘有数据输入的呢?

外设与cpu的相关针脚有连接,当有信息输入的时候,操作系统会读取相应的中断号,然后读取相应的数据拷贝进来!!!

由此就会有这个中断向量表!(开机生成的第一种表!)

每个都会指向一个对应的方法!

先说一个结论,我们平时的使用ctrl+c其实就是向进程发送了二号信号!(== kill -2 +id)

接下来我们就来验证这个结论!

我们系统中有一个表,保存着收到不同信号执行的方式,所以我们要验证结论就需要借助这个表!

接下来我们先学一个系统调用signal,可以将信号的默认处理方式改成我们设置的信号处理方式!

(9号信号和17号信号不可以被自定义捕捉,其他的都可以)

通过上面的实验,我们就证明了我们上面的结论!!

这样我们就了解了信号的第一种产生方式,

接下来我们来正式看一下信号。

其中1-31是普通信号,34-64是实时信号!

目前我们主要讲普通信号。

这个时候就会产生一个问题,进程如何确定自己是否收到了某种信号,或者说信号到底是以一种什么样的形式进行传递和保存的?

答案就是位图,特定的比特位位置代表的就是特点的信号!

并且从低到高的比特位分别代表1,2....32号信号!!!

所以所谓的发信号其实就是写信号——将相应的比特位置1即可!(这里要注意一点,发信号的只能是操作系统,因为只有操作系统才是进程的管理者!!!)

然后我们再来谈一下异常,除0错误其实是会导致cpu的溢出标记位置1,这时cpu就会直接向操作系统发送信号!然后让操作系统来中止错误进程!

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

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

相关文章

Eclipse中Working Sets是用来做什么的?

当Eclipse中创建了太多的project,太多了,看的眼花缭乱,不好管理,也不想更换工作空间,Eclipse中 Java Working Set 工作集,可以将这些project分组,就像文件夹分类存放文件一样。 多说一句,感觉E…

C++ Primer 笔记(总结,摘要,概括)——第2章 变量和基本类型

目录 2.1 基本内置变量 2.1.1 算术类型 2.1.2 类型转换 2.1.3 字面值常量 2.2 变量 2.2.1 变量定义 2.2.2 变量声明和定义的关系 2.2.3 标识符 2.2.4 名字的作用域 2.3 复合类型 2.3.1 引用 2.3.2 指针 2.3.3 理解复合类型的声明 2.4 const限定符 2.4.1 const的引用 2.4.2…

【时事篇-05-03】20240222 金额145-150元填充27笔货币基金的具体数目测算( itertools)

作品展示 背景需求: 通过 itertools计算2525元存17笔145-150元金额的最适合方案 【时事篇-05-02】20240221 2525元存17只货币基金的具体数目测算( itertools)-CSDN博客文章浏览阅读823次,点赞32次,收藏13次。【时事篇…

陈世元:被保送中科院,两次被裁,人生不能老是按部就班的走下去,需要冒险,尝试一下新的东西

《程客有话说》是我们最新推出的一个访谈栏目,邀请了一些国内外有趣的程序员来分享他们的经验、观点与成长故事,我们尝试建立一个程序员交流与学习的平台,也欢迎大家推荐朋友或自己来参加我们的节目,一起加油。 本期我们邀请的程…

MyBatisPlus常用注解

目录 一、TableName 二、TableId 三、TableField 四、TableLogic 一、TableName 在使用MyBatis-Plus实现基本的CRUD时,我们并没有指定要操作的表,只是在Mapper接口继承BaseMapper时,设置了泛型User,而操作的表为user表 由此得出…

AD9226 65M采样 模数转换

用 vivado 写的 AD9220_ReadTEST module AD9220_ReadTEST( input clk, input rstn,output clk_driver, //模块时钟管脚 input [12:0]IO_data, //模块数据管脚output [11:0]ADC_Data,//12位ADC数据 output ADC_OTR //信号过压标志位 );wire areset, pll260m_lockedPIN; wire…

BigTime赛前季:2.027亿美金$BIGTIME玩家空投,塑造Web3游戏新时代

公开游戏策略和统计数据,证明游戏的未来在于真正以玩家为中心。 Big Time 工作室宣布,其旗舰作品 Big Time 的 pre-alpha 版本季前赛预开发阶段取得成功,这是一款混合了动作游戏与 MMORPG 的免费游戏。这是独一无二的类型融合,它结…

项目解决方案:校园云视频平台方案(视频接入、汇聚、联网、分享)

目 录 一、项目需求 二、系统设计方案 三、平台功能 四、案例展示 本方案分四个部分:项目需求、系统设计方案、平台基础功能、案例展示,如下: 一、项目需求 二、系统设计方案 通过AS-V1000视频资源综合管理平台实现监控视频的接入、…

JavaWeb——003Axios Vue组件库(Element)

目录 一、Ajax 1、同步与异步​编辑 2、原生Ajax(繁琐)​编辑 2.1、写一个简易的Ajax 3、Axios(推荐使用)​编辑 3.1、Axios入门 3.2、Axios请求方式别名 3.3、案例:基于Vue及Axios完成数据的动态加载展示​编…

将一个 PostgreSQL 数据库复制到另一个数据库中

以管理员身份进入cmd窗口,输入如下命令 语法: pg_dump -C -h 本机IP -U 本机postgresql用户名 源数据库名 | psql -h 服务器IP -U 服务器postgresql用户名 目标数据库名 示例: pg_dump -C -h 127.0.0.1 -U postgres test01-dbname | psql…

十七、鼠标操作与响应

项目功能实现&#xff1a;通过移动鼠标&#xff0c;在图片上实现类似画板绘制矩形的功能&#xff0c;并把绘制的矩形区域单独显示出来 按照之前的博文结构来&#xff0c;这里就不在赘述了 一、头文件 mouse.h #pragma once#include<opencv2/opencv.hpp>using namespac…

C/C++的内存管理(1)

内存管理 C与C的内存分布C语言中动态内存管理方式回顾C内存管理的方式 C与C的内存分布 我们学习C语言时就知道&#xff0c;储存不同的变量计算机会相应分配不同区块的内存。那为什么要把内存化为不同的区域呢&#xff1f;实质上是为了方便管理 下面我们来看看下面一道例题&…