首页 > 系统相关 >【Linux】解析信号的本质&相关函数及指令的介绍

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

时间:2024-10-14 15:46:55浏览次数:7  
标签:函数 YY 指令 kill 信号 Linux 进程 专栏 解析

前言

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

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

目录

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

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

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

例如:

  • 我们在一个进程运行过程中,输入ctrl+c
  • 这个键盘输入产生一个硬件中断,被OS获取,解释成信号,发送给目标前台进程;前台进程因为收到信号,进而引起进程退出
[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
    在这里插入图片描述

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函数总是会成功的,所以没有返回值。

标签:函数,YY,指令,kill,信号,Linux,进程,专栏,解析
From: https://blog.csdn.net/YYDsis/article/details/142026934

相关文章

  • Linux 之 nano 编辑器
    使用git提交的时候,发生冲突或要记录相关信息时会弹出nano这个编辑器。nano[选项][[+行,列]文件名]...nano[必要参数][选择参数][文件]命令行白的部分是组合键,后面的则是该组合键的功能。指数符号(^)代表的是键盘的[ctrl]按键,(M)表示Alt键。[Ctrl]-G:取得在线帮助(hel......
  • 十、Linux 之定时任务调度
    1、crond任务调度crontab进行定时任务的设置1.1概述任务调度:是指系统在某个时间执行的特定的命令或程序。任务调度分类:1.系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等个别用户工作:个别用户可能希望执行某些程序,比如对mysql数据库的备份。示意图......
  • 华为云 linux centos8 安装tendis
    一、下载下载地址:http://tendis.cn/#/点击右上角的Download点击tendisplus-2.7.0-rocksdb-v8.5.3.tgz,由于下载速度非常慢,改用wget方式下载解决云服务器中访问github速度慢的问题:linux中在/etc/hosts中添加如下内容:20.205.243.166github.com输入下载命令:wgethttps:/......
  • Linux常用命令(每日两更)
     一、Linux基础命令1、bc数字计算器作用:用于数字计算以及进制转换#安装bc工具[root@192~]#yum-yinstallbc>/dev/null;echo-e"\a"​#bc用于数字计算[root@192~]#echo"1+1"|bc2​#bc用于进制转换obase表示输出的进制,ibase表示输入的进制[root@19......
  • linux free 解释
    [root@kafka-1node_export]#free-mtotalusedfreesharedbuff/cacheavailableMem:3896391303094743273在Linux系统中,free-m命令用于显示系统内存的使用情况。输......
  • Linux NFS
    NFS网络文件系统,英文NetworkFileSystem(NFS),是由SUN公司研制的UNIX表示层协议(presentationlayerprotocol),能使使用者访问网络上别处的文件就像在使用自己的计算机一样。用vm虚拟两个linux;并同时关闭firewalld&SELINUXsystemctldisablefirewalldsetenforce0 s......
  • arm Linux中dma的cache管理
    概述前两周有人询问DMA下的cache操作和dma-coherent。以前零碎看过代码。临时找,还没有找到。这两天整理了调用流程,也找到了dma-coherent的用法。Linux的文档里没有详细说明dma-coherent的用法。根据代码,如果dma的设备树里有dma-coherent,Linux则认为硬件会维护cache一致性,不会在d......
  • Linux系统之ipcalc命令的基本使用
    (Linux系统之ipcalc命令的基本使用)一、ipcalc命令介绍ipcalc命令是一个用于计算和显示IP地址和子网掩码相关信息的工具。它可以帮助用户快速计算出IP地址、子网掩码、网络地址、广播地址等信息。二、ipcalc命令的使用帮助2.1ipcalc命令的help帮助信息使用--help,查询ipca......
  • 【Linux】useradd和adduser的区别
    先说结论:useradd是Linux本身自带的命令,属于原始级命令,有很多的参数可以设置,但对初学者使用不太友好。         adduser是一个Perl脚本,【推荐使用】在Linux系统中,创建用户是一个常见的操作,而useradd和adduser是两个常用的命令。虽然这两个命令的主要功能相似,但......
  • Linux集群架构搭载高可用负载均衡集群
    一.Linux集群概述•根据功能划分为两大类:高可用和负载均衡•高可用集群通常为两台服务器,一台工作,另外一台作为冗余,当提供服务的机器宕机,冗余将接替继续提供服务•实现高可用的开源软件有:heartbeat、keepalived•负载均衡集群,需要有一台服务器作为分发器,它负责把用......