【浅学Linux】信号产生的4中方式

news/2024/11/19 23:20:10/

文章目录

  • 一:通过终端按键产生信号
  • 二:调用系统函数向进程发信号
  • 三:由软件条件产生信号
  • 四:硬件异常产生信号
  • 总结

一:通过终端按键产生信号

比如用户输入命令,在Shell下启动一个前台进程。

  1. 用户按Ctrl + C,这时在键盘产生一个硬件中断,被操作系统获取,解释成信号,发送给目标前台进程,前台进程因为收到信号,进而引起进程退出。

二:调用系统函数向进程发信号

(1):kill()函数
int kill(pid_t pid, int sig);
kill函数可以给一个指定的进程发送指定的信号。

(2):raise()函数
int raise(int sig);
raise函数可以给当前进程发送指定的信号(自己给自己发信号)。

这两个函数都是成功返回0,错误返回-1;

(3):abort()函数
void abort(void);
abort函数使当前进程接收到信号而异常终止。

就像exit函数一样,abort函数总是会成功的,所以没有返回值。

三:由软件条件产生信号

这里主要介绍一个alarm函数和SIGALRM信号;

unsigned int alarm(unsigned int seconds);
调用alarm函数可以设定一个闹钟,也就是告诉内核在seconds秒后给当前进程发送SIGALRM信号,该信号的默认处理动作是终止当前进程。

这个函数的返回值是0或者是以前设定的闹钟时间还余下的秒数。

int main()
{int count = 0;alarm(1);for(;1;count++){printf("count = %d\n", count);}return 0;
}

四:硬件异常产生信号

硬件异常被硬件以某种方式被硬件检测到并通知内核然后内核向当前进程发送适当的信号。例如当前进程执行了除以O的指令,CPU的运算单元会产生异常,内核将这个异常解释为SIGFPE信号发送给进程。再比如当前进程访问了非法内存地址,MMU会产生异常,内核将这个异常解释为SIGSEGV信号发送给进程。

总结

  1. 上面所说的信号的产生,最终都是要操作系统来执行,因为OS是进程的管理者。
  2. 信号的处理是在合适的时候处理的!(下篇博客详细讲
  3. 信号如果不是被立即处理的,需要记录在进程控制块中。

http://www.ppmy.cn/news/5620.html

相关文章

leetcode 337 打家劫舍III

题目 小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为 root 。 除了 root 之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果 两个直…

【C++入门基础(上)】

Cross the stars over the moon to meet your better-self. 目录 1 命名空间 1.1 命名空间定义 1.2 命名空间使用 1.2.1 加命名空间名称及作用域限定符 1.2.2 使用using将命名空间中成员引入 1.2.3 使用using namespace 命名空间名称引入 2 C输入&&输出 3 缺省参数…

Redis集群的三种方式详解(附优缺点及原理区别)

Redis提供了三种集群方式,下面我重点详解Redis三种集群方式的原理及优缺点等区别mikechen 目录 Redis主从复制模式Redis哨兵模式Redis集群模式 Redis主从复制模式 1.Redis主从复制定义 主从模式是三种模式中最简单的,主从模式指的是使用一个Redis实例…

【Java枚举类与注解】——一篇文章读懂枚举类与注解

文章目录2.枚举2.1概述2.2定义格式2.3枚举的特点2.4枚举的方法3.注解3.1概述3.2自定义注解3.3 元注解2.枚举 2.1概述 为了间接的表示一些固定的值,Java就给我们提供了枚举,是指将变量的值一一列出来,变量的值只限于列举出来的值的范围内。 …

Spring事件处理

在实际业务开发中,有时候复杂性的业务之间需要解耦,常用的方法:同步、异步、MQ。但 MQ 重啊,非必要不提升架构复杂度。 针对同步和异步使用方式:1.定时器 2.Spring Event. Spring Event: 观察者…

STM32的ST-link调试下载,各种调试接口硬件介绍

调试原理 STM32F-10X使用M3内核,该内核支持复杂的同i傲视操作,硬件调试模块允许在取指令(指令单步运行)或访问数据(数据断电时)使得内核停止。在内核停止时,内核状态都可被查询,完成…

数理统计期末复习笔记(一)

数理统计期末复习笔记 主要内容: 数据压缩,点估计,假设检验,区间检验 Reference: Statistical Inference, Casella&Berger Chapter 6 Data Reduction(数据压缩) 随机样本: 无限样本&…

记录我の秋招之旅【23届 CV算法岗】

文章目录碎碎念春招实习华为实习魔幻秋招尘埃落定碎碎念 今年(2022年)的秋招不能说"非常困难"吧,只能说是"地狱难度",相信参与或者从侧面了解过的同学们也能感同身受。从今年的三月份开始着手秋招,期间也一直忙着实验室…