APUE中有这样一段代码:
void sig_int(int),sig_quit(int);
if(signal(SIGINT,SIG_IGN)!=SIG_IGN)
signal(SIGINT,sig_int);
if(signal(SIGQUIT,SIG_IGN)!=SIG_IGN)
signal(SIGQUIT,sig_quit);
这段代码是什么意思?主要是不理解if语句的判断起到什么作用??
这段代码下面有这样一段话:
从signal的这两个调用中也可以看到这种函数的限制:不改变信号的处理方式就不能确定信号的当前处理方式。
这句话也同样不理解。。
signal 没有办法直接获取当前的信号处理动作
只能通过设置一个新的信号处理动作,然后获取返回值的方式得到当前的信号处理动作
那两个if判断表示:
如果当前的信号处理动作不是SIG_IGN,那么设置新的信号处理动作