信号的可靠与不可靠以及信号的含义
信号有丢失.(信号压缩)
由于历史的缘故:信号有压缩的需求.
可靠信号(实时信号)与不可靠信号(非实时信号).
早期信号 1-31 31个信号, 不可靠(与系统有关).(会有信号丢失)
后期信号34-64 31个信号,可靠信号(用户信号) (不会出现信号丢失)
例子1:信号丢失
#include<stdio.h>
#include<unistd.h>
#include<signal.h>
void deal()
{
printf(“信号发生!\n”);
}
void main()
{
signal(SIGINT,deal);
while(1);
}
#include<stdio.h>
#include<unistd.h>
#include<signal.h>
void main()
{
inti;
for(i=0;i<5;i++)
{
kill(pid,SIGINT); //注pid为上面程序的进程id,此处用pid代替
}
}
该例子会出现一个问题:程序发生5次信号,但程序就只接受到了2次信号,因为发送的是非实时信号(与系统有关),系统压缩了同样的信号。
例子2:信号不丢失
#include<stdio.h>
#include<unistd.h>
#include<signal.h>
void deal()
{
printf(“信号发生!\n”);
}
void main()
{
signal(35,deal);
while(1);
}
#include<stdio.h>
#include<unistd.h>
#include<signal.h>
void main()
{
inti;
for(i=0;i<5;i++)
{
kill(pid,35); //注pid为上面程序的进程id,此处用pid代替
}
}
此程序就不会出现信号丢失,会打印5次信号发生,因为发送的信号为实时信号时用户信号,系统不会压缩出现次数过多的同一个信号。