linux之信号

Linux之信号

  • 什么是信号
  • 信号的产生方式
    • signal
    • signaction
    • kill
    • 信号集
    • 信号屏蔽

什么是信号

信号机制是一种使用信号来进行进程之间传递消息的方法,信号的全称为软中断信号,简称软中断。
信号的本质是软件层次上对中断的一种模拟(软中断)。它是一种异步通信的处理机制,
事实上,进程并不知道信号何时到来。

Linux系统一共有64个信号
其中1-31信号供应用开发者使用
32-64,后来扩充的

1~31之间的信号叫做非实时信号, 不支持排队, 信号可能会丢失, 也叫做不可靠信号。
34~64之间的信号叫做实时信号, 支持排队, 信号不会丢失, 也叫做可靠信号

信号是由用户、系统或进程发送给目标进程的信息,以通知目标进程摸个状态的改变或系统异常。

信号处理的优先级是大于系统调用的。

信号的产生方式

1.硬件产生信号
2.内核产生信号
3.进程产生信号

signal

signal函数
作用:为当前进程注册一个信号处理的行为
注册了,可以一直使用

linux之信号_第1张图片

这个函数头文件是signal.h

第一个参数是int类型的信号
第二个参数是个函数指针(参数传函数)

linux之信号_第2张图片

signaction

linux之信号_第3张图片

signaction 是比signal 更高级的信号处理函数
它不仅仅可以接收信号作信号处理,还能在接收信号的同时接收一些信息

kill

linux之信号_第4张图片

简单信号发送函数,用kill -s的时候,可以发送信号

信号集

信号集:多个信号的集合

信号集为: sigset_t类型

linux之信号_第5张图片

有一系列函数,这里只是列举了部分

信号屏蔽

操作系统内核维护一个信号队列
如果产生了信号,那么就入队

注册了信号处理的话,从队列中取出信号,进行处理
如果屏蔽某个信号,那么就不会从队列中取出信号

直到接触屏蔽,在进行信号处理

信号屏蔽用sigprocmask函数来进行处理

linux之信号_第6张图片linux之信号_第7张图片linux之信号_第8张图片

当然这部分知识,我学的也有限,就先到这里
后面了解更多了,再来补充

你可能感兴趣的:(Linux从基础到入门,linux,运维,服务器)