Linux信号基础

一、信号概念

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

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

信号由谁处理、怎么处理

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

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

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

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

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

二、信号集

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

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

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

相关推荐

  1. Linux信号基础

    2024-06-12 09:22:02       4 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-12 09:22:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-12 09:22:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-12 09:22:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-12 09:22:02       18 阅读

热门阅读

  1. 介绍 TensorFlow 的基本概念和使用场景。

    2024-06-12 09:22:02       11 阅读
  2. 单例设计模式

    2024-06-12 09:22:02       4 阅读
  3. 计算机网络知识点(一)

    2024-06-12 09:22:02       8 阅读
  4. linux查找生产问题常用命令——参数解释

    2024-06-12 09:22:02       6 阅读
  5. 详细说说机器学习在自然语言处理的应用

    2024-06-12 09:22:02       8 阅读
  6. 【HarmonyOS】HUAWEI DevEco Studio 下载地址汇总

    2024-06-12 09:22:02       7 阅读
  7. MAC认证

    MAC认证

    2024-06-12 09:22:02      6 阅读
  8. Python也能在web界面写爬虫了

    2024-06-12 09:22:02       3 阅读
  9. 【PHP小课堂】深入学习PHP中的SESSION(一)

    2024-06-12 09:22:02       7 阅读
  10. PostgreSQL的视图pg_database

    2024-06-12 09:22:02       5 阅读