相信大家或多或少都听说过信号这一概念,这篇博客将为大家讲解一些信号方面的基础知识
信号简介
定义 | Linux操作系统中重要的消息机制 |
功能 | 主要被用于进程干预处置,大多数信号的作用是杀死或挂起进程,只有少部分的信号不是用来杀死或挂起进程 |
个数 | 64个,可通过命令 kill -l 来查看系统支持的信号 |
关于信号的一些小秘密
在前面的内容中,我们说过,可以通过命令 kill -l 来查看系统支持的信号
在这个图片中,我们可以发现两个有趣的地方
系统中触发信号的几种方式
1.终端组合按键触发信号
相信大家或多或少地都在终端中用过CTRL+C来杀死进程,其实它的实现原理就是:当你按下该组合按键时,就会向目标进程发送2号信号—SIGINT,然后操作系统杀死该进程
CTRL+\ 也是同理,触发的是3号信号—SIGQUIT,作用同样是杀死进程,会显示“退出(核心已转储)”字样
CTRL+Z,触发的是20号信号—SIGTSTP来挂起终端进程到后台
2.命令触发信号
这个大家也很常用,kill -signo pid #向任意目标进程发送任意信号
signo——信号编号
3.函数触发信号
有三个比较常用的函数,如下所示:
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<signal.h>
int main(int argc , char** argv)
{
if(argc < 3)
{
printf("参数输入过少,请检查!\n");
exit(0);
}
kill(atoi(argv[2]) , atoi(argv[1]));
printf("进程已杀死!\n");
exit(0);
}
4.硬件异常产生信号
常见的有以下三种情况:
但要注意的是,无论进程是否异常,只要接收到杀死信号就会被杀死
5.软条件触发产生信号
常见的有以下两种情况:
以上就是本篇博客的全部内容了,大家有什么地方没有看懂的话,可以在评论区留言给我,咱要力所能及的话就帮大家解答解答
今天的学习记录到此结束啦,咱们下篇文章见,ByeBye!