Linux 信号机制

本文介绍了Linux信号机制,包括信号的分类、响应方式以及如何查看系统支持的信号。信号可分为可靠和不可靠,实时和非实时。通过示例展示了不可靠信号SIGINT和可靠信号SIGRTMIN的处理函数,并提供了测试方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux 信号机制详解

 

信号

Linux信号是一种“软中断”处理机制,它提供了一种处理异步事件的方法;信号也可用于进程间通信(一个进程可以向另一个进程发送信号)。

 

信号的分类

1、  按可靠性:分为可靠信号及不可靠信号

不可靠信号是指信号可能会丢失,即在信号处理函数执行期间,如果该信号产生多次则只保留一次(调用一次信号处理函数),其余的都会被丢失。信号值小于SIGRTMIN的信号都属于不可靠信号。

可靠信号支持排队,不会丢失;值大于等于SIGRTMIN的信号都属于可靠信号。

注意:现在的linux版本中信号是否可靠跟signal或sigaction函数没关系,在一些比较老的文档中可能会提到信号是否可以跟注册函数相关。

 

(文档末尾提供信号可靠性测试函数)

2、  按实时性:分为实时信号与非实时信号

实时信号即是可靠信号,它支持排队,不会丢失;非实时信号即是不可靠信号。

 

信号的响应方式

进程支持三种方式响应信号:A、忽略信号,即对信号不做任合处理,但SIGKILL及SIGSTOP信号不能被忽略(相信大家应该都知道为什么不能被忽略了)。B、按缺省方式处理,linux对每种信号都规定了缺省动作。C、捕捉信号,这也是我们最常用的方式,注册一个信号处理函数,当信号到达时会调用注册的处理函数。

 

查看系统中支持的信号

使用Kill –l 命令可以显示出当前系统支持的所有信号。我的系统中支持如下信号:

1) SIGHUP      2) SIGINT        3) SIGQUIT     4) SIGILL

 5)SIGTRAP     6) SIGABRT    7) SIGBUS       8) SIGFPE

 9)SIGKILL       10) SIGUSR1     11) SIGSEGV     12)SIGUSR2

13) SIGPIPE      14)SIGALRM   15) SIGTERM   16) SIGSTKFLT

17) SIGCHLD    18)SIGCONT    19) SIGSTOP     20) SIGTSTP

21) SIGTTIN      22)SIGTTOU    23)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值