参考博客参考博客的链接
建议先看博客内容,以下只是个人编写的验证规律的代码。
信号的分类
从可靠性分为:可靠和不可靠信号 输入kill -l 命令 查看信号值小于SIGRTMIN的信号都是不可靠信号
与时间的关系:实时和非实时信号
早期Unix系统只定义了32种信号,前32种信号已经有了预定义值,每个信号有了确定的用途及含义,并且每种信号都有各自的缺省动作。如按键盘的CTRL ^C时,会产生SIGINT信号,对该信号的默认反应就是进程终止。后32个信号表示实时信号,等同于前面阐述的可靠信号(即实时信号和可靠信号是一样的)。这保证了发送的多个实时信号都被接收。(引用自顶部链接的博文)
可靠和不可靠信号之间的关系
不可靠信号会发生丢失
下面代码来验证不可靠信号SIGINT会丢失的特点
#include <signal.h>
#include <unistd.h>
#include <stdio.h>
//接受到指定信号就在标准输出打印一个!
void handler(int signo)
{
write(1, "!", 1);//第一个参数是1, 代表向标准输出打印
sleep(10);//模拟处理程序时间很长的情况
}
int main(int argc, char **argv)
{
int i;
signal(SIGINT, handler)