【Linux】解读信号的本质&相关函数及指令的介绍

news2024/11/29 13:36:59

前言

大家好吖,欢迎来到 YY 滴Linux系列 ,热烈欢迎! 本章主要内容面向接触过C++的老铁
主要内容含:
在这里插入图片描述

欢迎订阅 YY滴C++专栏!更多干货持续更新!以下是传送门!

  • YY的《C++》专栏
  • YY的《C++11》专栏
  • YY的《Linux》专栏
  • YY的《数据结构》专栏
  • YY的《C语言基础》专栏
  • YY的《初学者易错点》专栏
  • YY的《小小知识点》专栏
  • YY的《单片机期末速过》专栏
  • YY的《C++期末速过》专栏
  • YY的《单片机》专栏
  • YY的《STM32》专栏
  • YY的《数据库》专栏
  • YY的《数据库原理》专栏

目录

  • 一.信号的本质与相关概念
    • 1.体现中断的例子:<ctrl+c产生信号终止前台进程>
  • 二.系统定义的信号列表
    • 1.用kill -l命令可以察看系统定义的信号列表(普通/实时信号)
    • 2.(ps&kill&raise&abort)进程指令&信号相关函数
      • 【总结】
      • 【1】ps指令
      • 【2】kill&raise函数介绍与演示
      • 【3】abort函数介绍与演示

一.信号的本质与相关概念

  1. 信号:是一种向目标进程发送通知消息的一种机制
  2. 信号本质:其实就是用软件,来模拟中断的行为(信号是进程之间事件异步通知的一种方式,属于软中断)
  3. 信号信号产生了,我们不一定要立即处理它,而是我们在合适的时候处理;我们要有一种能力,将已经到来的信号,
    进行暂时保存

1.体现中断的例子:<ctrl+c产生信号终止前台进程>

例如:

  • 我们在一个进程运行过程中,输入ctrl+c
  • 这个键盘输入产生一个硬件中断,被OS获取,解释成信号(2号信号SIGINT),发送给目标前台进程;前台进程因为收到信号,进而引起进程退出
[hb@localhost code_test]$ cat sig.c 
#include <stdio.h>
int main()
{
   while(1){
   printf("I am a process, I am waiting signal!\n");
   sleep(1);
 }
}
[hb@localhost code_test]$ ./sig 
I am a process, I am waiting signal!
I am a process, I am waiting signal!
I am a process, I am waiting signal!
^C
[hb@localhost code_test]$

在这里插入图片描述

二.系统定义的信号列表

1.用kill -l命令可以察看系统定义的信号列表(普通/实时信号)

  • 每个信号都有一个编号和一个宏定义名称,这些宏定义可以在signal.h中找到
  • 例如其中有定 义 #define SIGKILL 9
  • 同时1-30号信号称作 “普通信号” ,30-64称为 “实时信号”
    在这里插入图片描述
  1. 普通信号:

早期Unix版本中系统提供的信号类型,通常用于进程间的简单通信或通知。
数量有限,且部分信号(如SIGKILL和SIGSTOP)不能被捕获或忽略。

  1. 实时信号:

实时信号是POSIX.1标准中引入的一种信号类型,旨在提供比普通信号更可靠、更灵活的通信机制。
在Linux系统中,实时信号的整数编号从32(SIGRTMIN)到63(SIGRTMAX),共32个。

2.(ps&kill&raise&abort)进程指令&信号相关函数

【总结】

  1. kill命令是调用kill函数实现的。kill函数可以给一个指定的进程发送指定的信号。
  2. raise函数可以给当前进程发送指定的信号(自己给自己发信号)。
  3. abort函数使当前进程接收到信号而异常终止。

【1】ps指令

-- 这个命令会列出当前终端会话中的所有进程
ps
-- 可以通过grep命令来过滤出特定的进程,例如:
ps | grep <特定的进程>

【2】kill&raise函数介绍与演示

#include <signal.h>
int kill(pid_t pid, int signo);
int raise(int signo);
这两个函数都是成功返回0,错误返回-1
  • kill命令是调用kill函数实现的。
  • kill函数可以给一个指定的进程发送指定的信号。
  • raise函数可以给当前进程发送指定的信号(自己给自己发信号)

演示:在后台执行死循环程序,然后用kill命令给它发SIGSEGV信号

在这里插入图片描述

【3】abort函数介绍与演示

  • abort函数使当前进程接收到信号而异常终止
#include <stdlib.h>
void abort(void);
就像exit函数一样,abort函数总是会成功的,所以没有返回值。

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

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

相关文章

k8s的部署和安装

k8s的部署和安装 一、Kubernets简介及部署方法 1.1 应用部署方式演变 在部署应用程序的方式上&#xff0c;主要经历了三个阶段&#xff1a; 传统部署&#xff1a;互联网早期&#xff0c;会直接将应用程序部署在物理机上 优点&#xff1a;简单&#xff0c;不需要其它技术的参…

【去哪儿-注册安全分析报告-缺少轨迹的滑动条】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 1. 暴力破解密码&#xff0c;造成用户信息泄露 2. 短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉 3. 带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造…

查看SQL执行计划 explain

查看SQL执行计划 explain explain使用方式 alter session set current_schematest; explain plan for sql语句; --并不会实际执行&#xff0c;因此生成的执行计划也是预估的 select * from table(dbms_xplan.display); explain使用场景 1.内存中没有谓词信息了&#xff0…

网站仿制的五大要素

网站仿制的五大要素 在数字化快速发展的今天&#xff0c;仿制一个网站不仅是技术上的挑战&#xff0c;更是对创意与灵感的考验。无论是为了学习设计理念&#xff0c;还是为企业进行市场竞争&#xff0c;以下五大要素是网站仿制时必不可少的。 **1. 目标分析** 在仿制网站之前…

1. ESP32简介

ESP32是什么&#xff1a;它是乐鑫科技研发和设计的一种无线系统级芯片优点&#xff1a; 强大的处理能力无线通信功能广泛的外设接口低功耗特性 为什么选择ESP-IDF开发&#xff1a; 基于C/C开发官方主推实际项目需求 常见的ESP32型号&#xff1a;

Docker 环境下 GPU 监控实战:使用 Prometheus 实现 DCGM Exporter 部署与 GPU 性能监控

Docker 环境下 GPU 监控实战&#xff1a;使用 Prometheus 实现 DCGM Exporter 部署与 GPU 性能监控 文章目录 Docker 环境下 GPU 监控实战&#xff1a;使用 Prometheus 实现 DCGM Exporter 部署与 GPU 性能监控一 查看当前 GPU 信息二 dcgm-exporter 部署1&#xff09;Docker r…

电脑端微信图片文件视频的缓存目录

C:\Users\aaa30\Documents\WeChat Files\wxid_n6b8j77iqho412\FileStorage\Video\2024-10

冠层体散射反射对称性协方差矩阵的模型,在多种分解中都适用

把这个矩阵对应到观测协方差矩阵中&#xff0c;看占比多少&#xff0c;然年后得到体散射功率&#xff0c;时前面的系数乘对角线的和

51单片机快速入门之左移右移流水灯 2024年10/15

51单片机快速入门之左移右移流水灯 左移操作: <<1 每次往左移动一位假设一个八位数为0000 1111 当这个数左移一次之后 0 0001 1110当这个数左移两次之后 00 0011 1100 注意观察 橙色 数字 Python代码如下: 0b表示这是一个二进制 注意这里前置0被省略了 …

数据结构——树和森林

目录 树的存储结构 1、双亲表示法 2、孩子链表 3、孩子兄弟表示法 树与二叉树的转换 将树转换为二叉树 将二叉树转换为树 森林与二叉树的转化 森林转换成二叉树 二叉树转换为森林 树和森林的遍历 1、 树的遍历&#xff08;三种方式&#xff09; 2、森林的遍历 树的存…

DVWA之File Inclusion(文件包含)

DVWA之File Inclusion&#xff08;文件包含&#xff09; 1、定义&#xff1a;服务器通过php的特性&#xff08;函数的特性&#xff09;去包含任意文件时&#xff0c;由于对包含的文件来源没有过滤或过滤不严&#xff0c;从而可去包含一个恶意的文件。文件包含包括&#xff1a;…

【从零开始的LeetCode-算法】3200. 三角形的最大高度

给你两个整数 red 和 blue&#xff0c;分别表示红色球和蓝色球的数量。你需要使用这些球来组成一个三角形&#xff0c;满足第 1 行有 1 个球&#xff0c;第 2 行有 2 个球&#xff0c;第 3 行有 3 个球&#xff0c;依此类推。 每一行的球必须是 相同 颜色&#xff0c;且相邻行…

AdaTAD(CVPR 2024)视频动作检测方法详解

前言 论文&#xff1a;End-to-End Temporal Action Detection with 1B Parameters Across 1000 Frames 代码&#xff1a;AdaTAD 从论文标题可以看出&#xff0c;AdaTAD 可以在 1B 参数且输入视频在 1000 帧的情况下实现端到端的训练&#xff0c;核心创新点是引入 Temporal-Inf…

STM32传感器模块编程实践(六) 1.8寸液晶屏TFT LCD彩屏简介及驱动源码

文章目录 一.概要二.TFT彩屏主要参数三.TFT彩屏参考原理图四.TFT彩屏模块接线说明五.模块SPI通讯协议介绍六.TFT彩屏模块显示1.显示英文字符串2.显示数字3.显示中文 七.TFT彩屏实现图片显示八.STM32单片机1.8寸 TFT LCD显示实验1.硬件准备2.软件工程3.软件主要代码4.实验效果 九…

【C++】——list 容器的解析与极致实现

人的一切痛苦&#xff0c;本质上都是对自己的无能的愤怒。 —— 王小波 目录 1、list 介绍 2、list的使用 2.1 list 的构造 2.2 iterator 的使用 2.3 list 的修改 2.4一些特殊接口 2.5 迭代器失效问题 3、实现list 3.1底层结构 结点类 list类 迭代器类 3.2功能接…

VLOG视频制作解决方案,开发者可自行定制包装模板

无论是旅行见闻、美食探店&#xff0c;还是日常琐事、创意挑战&#xff0c;每一个镜头背后都蕴含着创作者无限的热情和创意。然而&#xff0c;面对纷繁复杂的视频编辑工具&#xff0c;美摄科技凭借其前沿的视频制作技术和创新的解决方案&#xff0c;为每一位视频创作者提供了开…

服务端负载均衡和客户端负载

负载均衡分为服务端负载均衡和客户端负载均衡&#xff0c;图解&#xff1a; 客户端的负载均衡还需要从注册中心获取集群部署的服务地址&#xff0c;其中客户的负载均衡器定时读取注册中心的IP和端口&#xff0c;然后缓存起来&#xff0c;这样以后可以先判断缓存IP和端口是否可用…

矩阵基础知识

矩阵定义 矩阵的定义 1.矩阵是由一组数按照矩形排列而成的数表。矩阵通常用大写字母表示&#xff0c;例如 AA、BB 等。矩阵中的每个数称为矩阵的元素或元。 一个 mn的矩阵 AA 可以表示为&#xff1a; 其中 aij表示矩阵 A中第i行第j列的元素。 矩阵的维度 1.矩阵的维度由它…

城市形态计算方法

1、天空可视率&#xff08;Sky view factor sky&#xff09; &#xff08;1&#xff09;准备地形数据、带高度的建筑矢量数据 &#xff08;2&#xff09;将建筑矢量数据投影栅格&#xff0c;利用栅格计算器和镶嵌至新栅格得到带有建筑高度数据的地形数据 &#xff08;3&…

[Windows] 屏幕截图工具Snipaste 开发过程更轻松

前言 老大&#xff1a;你去把用户登录代码写完。 老大&#xff1a;你把这周的周报发一下 老大&#xff1a;你把生产的数据清理一下。 结果… 今天刚把登录代码写完&#xff0c;下班&#xff0c;明天就处理别的事情去了&#xff01;&#xff01;&#xff01; 之后我就… 直接…