标准信号的局限性:
1. 阻塞信号可能会丢失。当一个信号阻塞时,这个信号即使多次发送给进程,也被执行一次信号句柄。
2. 信号交付没有携带与信号有关信息。接受到信号的进程无法区分同种信号的不同情况,也不知道信号从何而来。
3. 信号的交付没有优先级。当有多个信号悬挂与一个进程时,交付的顺序不确定。
实时信号对标准信号做了一下扩充,有以下的特点:
1.增加了信号从SIGRTMIN到SIGRTMAX的实时信号,可以通过sysconf(_SC_RTSIG_MAX)获得当前操作系统支持的实时信号的个数。
2. 实时信号在队列中并按顺序交付。同一类型的实时信号将按顺序交付给进程。
3. 实时信号可以携带额外的信息。
4. 进程能够通过专门的函数更快的回复信号。
5. 当定时器到期、空消息队列有消息到达、有异步IO完成时,信号能够及时交付给进程。
通过设置sigaction结构体中的sa_flags标志为SA_SIGNFO实现实时信号句柄的安装。此时的信号句柄原型为void func(int signo,siginfo_t *i