信号接收最终选用此机制:
struct sigaction act, oldact;
act.sa_handler = sig_handler;
act.sa_flags = 0;
sigemptyset(&act.sa_mask);
sigaction(SIGRTMIN+8, &act, &oldact);
sigaction(SIGRTMIN+9, &act, &oldact);
对于目前linux的两个信号安装函数:signal()及sigaction()来说,它们都不能把SIGRTMIN以前的信号变成可靠信号(都不支持排队,仍有可能丢失,仍然是不可靠信号),而且对SIGRTMIN以后的信号都支持排队。这两个函数的最大区别在于,经过sigaction安装的信号都能传递信息给信号处理函数,而经过signal安装的信号不能向信号处理函数传递信息。对于信号发送函数来说也是一样的。信号值位于SIGRTMIN和SIGRTMAX之间的信号都是可靠信号,可靠信号克服了信号可能丢失的问题。
参考及有用的文档:
http://www.cnblogs.com/hoys/archive/2012/08/19/2646377.html (2.1、可靠信号与不可靠信号)
http://blog.chinaunix.net/uid-20583479-id-1919898.html (部分代码)
http://blog.chinaunix.net/uid-1877180-id-3011232.html (参考)
http://blog.chinaunix.net/uid-25100840-id-307217.html?bsh_bid=235144559 (有用)