当前位置: 首页 > news >正文

Linux 信号的基本概念

信号的基本概念

1. 信号的概念

信号是Linux系统响应某些条件产生的一些事件。接收到信号的进程会相应地采取一些行动。

2. 信号的生成

信号是由于某些错误条件而生成的,如内存段冲突、浮点处理器错误或非法指令等。信号的生成其实就是一种软件层次的中断,信号由shell和终端处理器生成来引起中断,信号还可以作为在进程间传递消息或修改行为的一种方式,明确地由一个进程发送给另一个进程。一个进程要么正常结束,要么就是某一个信号把这个进程中断了。

3.信号的响应方式

信号产生之后,进程接收这个信号,然后做出一些响应,做出的响应有三种方式,默认方式、忽略和自定义。改变这三种响应方式要通过系统调用signal()。

与信号有关的系统调用在“signal.h”头文件中有声明。

4. 信号名称的定义

信号的值在系统源码中的定义如下,它们都以SIG开头:

(1)#define SIGHUP 1 连接挂断
(2)#define SIGINT 2 终端中断,键盘按下Ctrl+c时,会产生该信号
(3)#define SIGQUIT 3 终端退出
(4)#define SIGILL 4 *非法指令
(5)#define SIGTRAP 5 由断点指令或其它陷阱(trap)指令产生
(6)#define SIGABRT 6 调用abort函数生成的信号
(7)#define SIGIOT 6 建立CORE文件,执行I/O自陷
(8)#define SIGBUS 7 建立CORE文件,总线错误
(9)#define SIGFPE 8 建立CORE文件,浮点异常
(10)#define SIGKILL 9 终止进程,杀死进程,该信号的响应方式不允许改变
(11)#define SIGUSR1 10 终止进程,用户定义信号1
(12)#define SIGSEGV 11 建立CORE文件,段非法错误
(13)#define SIGUSR2 12 终止进程,用户定义信号2
(14)#define SIGPIPE 13 终止进程、向一个没有读进程的管道写数据,读端关闭的描述符,写端写入时产生,该信号会终止程序
(15)#define SIGALRM 14 终止进程,计时器到时
(16) #define SIGTERM 15 终止进程,软件终止信号,系统kill命令默认发送的信号
(17)#define SIGSTKFLT 16
(18)#define SIGCHLD 17 忽略信号,当子进程停止或退出时会默认给父进程发送该信号
(19)#define SIGCONT 18 忽略信号,继续执行一个停止的进程
(20)#define SIGSTOP 19 停止进程 非终端来的停止信号
(21)#define SIGTSTP 20 停止进程,终端来的停止信号 Ctrl+Z
(22)#define SIGTTIN 21 停止进程,后台进程读终端
(23)#define SIGTTOU 22 停止进程,后台进程写终端
(24)#define SIGURG 23 忽略信号,I/O紧急信号

5.信号的实现

收到信号的实体是一个进程,信号的实现在进程的PCB中记录,在PCB中有一个长整型变量signa:long a;,它有32个位,一开始它的值都为0,表示没有收到信号,假如现在通过kill(pid,sig)发送了一个信号,然后通过pid找到对应的PCB中的a,如果通过信号代号把a的1偏移对应的代号个位置,就代表当前进程收到了对应的代号的信号,接下来要处理这个信号,处理完这个信号的时候在把a恢复成0就可以了。如果极短时间内连续发送多个代号相同的信号,其实只能响应一次,因为第一次发送该信号时就已经把a的1偏移了对应的代号个位置,后面再发送相同的信号时是没有变化的,所以当a发生偏移还没有恢复之前,连续发送相同的信号没有意义。

相关文章:

Linux 信号的基本概念

信号的基本概念 1. 信号的概念 信号是Linux系统响应某些条件产生的一些事件。接收到信号的进程会相应地采取一些行动。 2. 信号的生成 信号是由于某些错误条件而生成的,如内存段冲突、浮点处理器错误或非法指令等。信号的生成其实就是一种软件层次的中断&#x…...

神经网络基础-神经网络补充概念-31-参数与超参数

概念 参数(Parameters): 参数是模型内部学习的变量,它们通过训练过程自动调整以最小化损失函数。在神经网络中,参数通常是连接权重(weights)和偏置(biases),…...

C# Linq源码分析之Take (二)

概要 本文主要分析Linq中Take带Range参数的重载方法的源码。对于其中的一些关于Range或序列的新概念,不再赘述,请参看C# Linq源码分析之Take (一) 源码分析 基于Range参数的Take重载方法,主要分成两部分实现&#x…...

FPGA控制RGB灯WS2812B

文章目录 FPGA控制RGB灯WS2812B1、简介1.1水一水1.2程序完成目标1.3项目工程结构 2、代码3、仿真代码4、结果展示 FPGA控制RGB灯WS2812B 1、简介 1.1水一水 最近在学习WS2812B手册,是一个简单的协议编写,做的时间也算是比较久,相对做出了一…...

【Linux】【驱动】应用层和驱动层传输数据

【Linux】【驱动】应用层和驱动层传输数据 绪论1.如果我在应用层使用系统0 对设备节点进行打开,关闭,读写等操作会发生什么呢? 2 我们的应用层和内核层是不能直接进行数据传输的3 驱动部分的代码4 应用代码5 编译以及运行代码 绪论 Linux一切皆文件! 文…...

【第二阶段】kotlin函数引用

针对上篇传入函数参数我们也可以重新定义一个函数,然后在main中调用时传入函数对象 lambda属于函数类型的对象,需要把普通函数变成函数类型的对象(函数引用),使用“::” /*** You can edit, ru…...

sip网络号角喇叭 sip音柱 POE供电广播音箱 ip网络防水对讲终端 sip网络功放

SV-7042TP网络号角喇叭 一、描述 SV-7042TP是我司的一款SIP网络号角喇叭,具有10/100M以太网接口,内置有一个高品质扬声器,将网络音源通过自带的功放和喇叭输出播放,可达到功率30W。SV-7042TP作为SIP系统的播放终端,可…...

【网络】传输层——TCP(滑动窗口流量控制拥塞控制延迟应答捎带应答)

🐱作者:一只大喵咪1201 🐱专栏:《网络》 🔥格言:你只管努力,剩下的交给时间! 上篇文章对TCP可靠性机制讲解了一部分,这篇文章接着继续讲解。 🎨滑动窗口 在…...

Electron教程_编程入门自学教程_菜鸟教程-免费教程分享

教程简介 Electron是一个是使用JavaScript,HTML和CSS构建跨平台的桌面应用程序框架。 Electron 通过将 Chromium 和 Node.js 合并到同一个运行时环境中,并将其打包为 Mac,Windows 和 Linux 系统下的应用来实现这一目的。 Electron入门教程 …...

LVS负载均衡DR(直接路由)模式

在LVS(Linux Virtual Server)负载均衡中的DR(Direct Routing)模式下,数据包的流向如下: 客户端发送请求到负载均衡器(LVS)的虚拟IP(VIP)。负载均衡器&#x…...

14 anaconda+pycharm环境管理以及源管理

文章目录 环境管理博主使用的环境环境设置conda常用指令pycharm与环境的连接(新2023版本后)设置国内镜像(源管理)常用操作 环境管理 博主使用的环境 Anaconda3-2023.03-Windows-x86_64 pycharm-professional-2023.2 环境设置 …...

【C语言程序设计】C语言基本数据类型与表达式(思考题)

思考题 1、C语言的主要特点有哪些? ①简单紧凑、灵活方便,②是结构化的语言,③运算符丰富,④是一种高效的语言,⑤可直接对硬件进行操作,⑥具有较好的可移植性。 高效性:C语言是一种高级编程语言…...

Linux 网络发包流程

哈喽大家好,我是咸鱼 之前咸鱼在《Linux 网络收包流程》一文中介绍了 Linux 是如何实现网络接收数据包的 简单回顾一下: 数据到达网卡之后,网卡通过 DMA 将数据放到内存分配好的一块 ring buffer 中,然后触发硬中断CPU 收到硬中…...

Python web实战之Django的AJAX支持详解

关键词:Web开发、Django、AJAX、前端交互、动态网页 今天和大家分享Django的AJAX支持。AJAX可实现在网页上动态加载内容、无刷新更新数据的需求。 1. AJAX简介 AJAX(Asynchronous JavaScript and XML)是一种在网页上实现异步通信的技术。通过…...

spring boot实现实体类参数自定义校验

安装依赖项 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency>1、新建实体类 Data public class UserEntity {private String name;private Integer age;…...

网络安全威胁与防御策略

第一章&#xff1a;引言 随着数字化时代的快速发展&#xff0c;网络已经成为人们生活和工作中不可或缺的一部分。然而&#xff0c;网络的广泛应用也引发了一系列严峻的网络安全威胁。恶意软件、网络攻击、数据泄露等问题层出不穷&#xff0c;给个人和企业带来了巨大的风险。本文…...

C++:哈希表——模拟散列表

模拟散列表 维护一个集合&#xff0c;支持如下几种操作&#xff1a; 1.“I x”&#xff0c;插入一个数x 2.“Q x”&#xff0c;询问数x是否在集合中出现过 现在要进行N次操作&#xff0c;对于每个询问操作输出对应的结果 输入格式 第一行包含整数N&#xff0c;表示操作数量 …...

项目配置中心介绍

目录 什么是配置中心 为什么要有配置中心 配置中心的做法&#xff08;读取和通知&#xff09; 配置中心优点: 常用的配置中心中间件 什么是配置中心 配置中心就是用来管理项目当中所有配置的系统&#xff0c;也是微服务系统当中不可或缺的一部分。项目的配置文件不放到本地…...

14-案例:购物车

综合案例-购物车 需求说明: 1. 渲染功能 v-if/v-else v-for :class 2. 删除功能 点击传参 filter过滤覆盖原数组 3. 修改个数 点击传参 find找对象 4. 全选反选 计算属性computed 完整写法 get/set 5. 统计 选中的 总价 和 数量 计算属性conputed reduce条件求和 6. 持久化到本…...

上海市青少年算法2023年2月月赛(丙组)

上海市青少年算法2023年2月月赛(丙组)T1 格式改写 题目描述 给定一个仅由拉丁字符组成字符序列,需要改写一些字符的大小写,使得序列全部变成大写或全部变成小写,请统计最少修改多少个字符才能完成这项任务。 输入格式 一个字符序列:保证仅由拉丁字符构成 输出格式 单个整…...

jetpack5.0.2 已经安装了 cudnn 和 tensorrt

在平台 jetson Xavier NX 中想使用 cudnn 和 tensorrt。然后自己下载了相应包并解压&#xff0c;拷贝&#xff0c;编译 安装 cudnn 1.下载对应包文件&#xff0c;例如&#xff1a;cudnn-linux-sbsa-8.4.1.50_cuda11.6-archive.tar.xz 2.解压&#xff0c;移动到解压目录&#…...

我的编程语言学习笔记

前言 作为一名编程初学者&#xff0c;我深知学习编程需要不断积累和记录。在这篇博客文章中&#xff0c;我将分享一些我在学习C/C编程语言过程中记录的常用代码、特定函数、复杂概念以及特定功能。希望能与大家一起切磋进步&#xff01; 常用代码&#xff1a; 1. 输入输出操作…...

一个DW的计算

一个DW的计算 1- 题目: 已知一个DW1.1 要求: 从DW中取出指定的位的值1.1.1 分析1.1.2 实现1.1.3 简化实现1.1.4 验证 2- 题目: 已知一个DW2.1 要求: 从DW中的指定的P和S,取出指定的位的值2.1.1 分析2.1.2 实现 1- 题目: 已知一个DW 有图中所示一行信息&#xff0c;表示一个DW(…...

java.net.BindException Address already in use: NET_Bind解决

java.net.BindException Address already in use: NET_Bind 两种解决方法 两种解决方法 (1) kill 占用此端口的线程 查看报错的端口 netstat -ano | findstr 16825tasklist | findstr 1092 如果占用的程序不重要直接kill taskkill /f /pid 16825 (2) 修改启动端口 找一个没…...

JMM内存模型之happens-before阐述

文章目录 一、happens-before的定义二、happens-before的规则1. 程序顺序规则&#xff1a;2. 监视器锁规则&#xff1a;3. volatile变量规则&#xff1a;4. 传递性&#xff1a;5. start()规则&#xff1a;6. join()规则&#xff1a; 一、happens-before的定义 如果一个操作hap…...

大数据课程I2——Kafka的架构

文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 掌握Kafka的架构; ⚪ 掌握Kafka的Topic与Partition; 一、Kafka核心概念及操作 1. producer生产者,可以是一个测试线程,也可以是某种技术框架(比如flume)。 2. producer向kafka生…...

vscode如何汉化

首先我们到vscode官网下载 链接如下&#xff1a; Visual Studio Code - Code Editing. Redefined 根据自己需要的版本下载就好 下载并且安装完毕之后 运行vscode 然后按快捷键 CTRLSHIFTX 打开安装扩展界面 搜索简体中文 安装就可以了 谢谢大家观看...

matlab保存图片

仅作为记录&#xff0c;大佬请跳过。 文章目录 用界面中的“另存为”用saveas 用界面中的“另存为” 即可。 参考 感谢大佬博主文章&#xff1a;传送门 用saveas 必须在编辑器中的plot之后用saveas&#xff08;也就是不能在命令行中单独使用——比如在编辑器中plot&#xf…...

产业园区数字孪生3d可视化全景展示方案

随着数字经济的发展&#xff0c;数字技术给企业发展带来了机遇的同时&#xff0c;也为企业管理带来挑战。比如园区运维&#xff0c;不仅体量大&#xff0c;复杂的运维管理系统&#xff0c;落地难度也较高。那么如何通过数字化手段重塑园区运营&#xff0c;打通园区各业务数据孤…...

centos7 jupyter notebook 安装自动补全插件

激活juoyter notebook的安装环境 conda activate prod执行以下命令安装 pip install jupyter_contrib_nbextensions -i https://pypi.tuna.tsinghua.edu.cn/simple jupyter contrib nbextension install --userpip install jupyter_nbextensions_configurator -i https://py…...