24、可靠信号与不可靠信号

本文详细解释了Linux系统中信号的分类,包括可靠信号与不可靠信号的区别,以及实时信号的特点。介绍了信号值小于SIGRTMIN的是不可靠信号,可能会出现处理错误或丢失的情况;而位于SIGRTMIN和SIGRTMAX之间的信号是可靠信号,支持排队且不会丢失。此外还对比了signal与sigaction函数的功能差异。

    以下整理转载自【1】。

1、可靠信号与不可靠信号

1)信号值小于SIGRTMIN(Red hat 7.2中,SIGRTMIN=32SIGRTMAX=63)的信号都是不可靠信号。主要问题如下:

进程每次处理信号后,就将对信号的响应设置为默认动作。在某些情况下,将导致对信号的错误处理;因此,用户如果不希望这样的操作,那么就要在信号处理函数结尾再一次调用signal(),重新安装该信号。

信号可能丢失。

    因此,早期unix下的不可靠信号主要指的是进程可能对信号做出错误的反应以及信号可能丢失。

2)信号值位于SIGRTMINSIGRTMAX之间的信号都是可靠信号,可靠信号克服了信号可能丢失的问题。

Linux在支持新版本的信号安装函数sigation()以及信号发送函数sigqueue()的同时,仍然支持早期的signal()信号安装函数,支持信号发送函数kill()

2、对SIGRTMIN以后的信号都支持排队。signalsigaction这两个函数的最大区别在于,经过sigaction安装的信号都能传递信息给信号处理函数(对所有信号这一点都成立),而经过signal安装的信号却不能向信号处理函数传递信息。对于信号发送函数来说也是一样的。

3、后32个信号表示实时信号,等同于前面阐述的可靠信号。这保证了发送的多个实时信号都被接收;实时信号是POSIX标准的一部分,可用于应用进程。非实时信号都不支持排队,都是不可靠信号;实时信号都支持排队,都是可靠信号。

参考

1http://www.ibm.com/developerworks/cn/linux/l-ipc/part2/index1.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值