- 不可靠信号(在执行自定义函数其间会丢失同类信号)
- 可靠信号(在执行自定义函数其间不会丢失同类信号)
不可靠信号用一次以后,就恢复其默认处理吗?
至少在ubuntu 12.04上,已经是一次绑定,永远使用,除非显性再次绑定默认行为。
测试方式:
1)不可靠信号(1-31)程序(关键代码:signal( SIGINT, sigintctl) ;)执行后,sleep的2s内按ctrl+c N次,只会看到1次信号处理的输出;
1)可靠信号(34-64)程序执行后(关键代码:signal( SIGRTMIN, sigintctl) ;)执行后,sleep的2s内kill -34 N次,会看到N次信号处理的输出。
参考代码:
#include <signal.h> void sigintctl(int signum) { printf( "handle begin. "); printf( "receive signum %d " , signum) ; sleep(2); printf( "handle end. "); } int main() { // signal( SIGINT, sigintctl) ; signal( SIGRTMIN, sigintctl) ; while(getchar() != "q") ; return 0 }