欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 创投人物 > Linux信号基础

Linux信号基础

2025/4/19 9:57:14 来源:https://blog.csdn.net/qq_47258284/article/details/139575868  浏览:    关键词:Linux信号基础

一、信号概念

信号是事件发生时对进程的通知机制,也可以把它称为软件中断。信号与硬件中断的相似之处在于能够 打断程序当前执行的正常流程,其实是在软件层次上对中断机制的一种模拟。大多数情况下,是无法预测信号达到的准确时间,所以,信号提供了一种处理异步事件的方法。

总的来看,信号的目的都是用于通信的,当发生某种情况 下,通过信号将情况“告知”相应的进程,从而达到同步、通信的目的。

信号由谁处理、怎么处理

信号由谁接收就由谁处理,当信号到达后,进程会对信号进行相应的处理,处理方式有3种。

1)忽略该信号   2)捕获信号,进程收到信号后执行预先绑定好的信号处理函数

3)执行系统默认处理函数,进程不处理,而是交给系统。

信号本质上是 int 类型数字编号

信号本质上是int类型的数字编号,内核针对每个信号都分配了一个编号,从1开始,与之一一对应的有名字也就是宏定义,因为不同系统可能对应的数字编号不同,所以一般使用信号的宏定义。

二、信号集

通常我们需要有一个能表示多个信号(一组信号)的数据类型 --- 信号集( signalset ),很多系统调用都使用到了信号集这种数据类型来作为参数传递,譬如 sigaction() 函数、 sigprocmask() 函数、 sigpending() 函数等。

三、信号掩码(阻塞信号传递)

内核为每一个进程维护了一个信号掩码(其实就是一个信号集),即一组信号。当进程接收到一个属于 信号掩码中定义的信号时,该信号将会被阻塞、无法传递给进程进行处理,那么内核会将其阻塞,直到该信号从信号掩码中移除,内核才会把该信号传递给进程从而得到处理。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词