一:信号处理机制,很多都是在系统函数上面又封装了一层函数。作为应用程序的接口函数。比如说signal函数是由sigaction实现的。
二:一个设置信号的函数。
#include "../my_h/our_head.h"
static void sig_quit(int);
int main(void){
sigset_t newmask,oldmask,pendmask;
if(signal(SIGQUIT,sig_quit) == SIG_ERR)
printf("can't catch SIGQUIT");
sigemptyset(&newmask);
sigaddset(&newmask,SIGQUIT);
if(sigprocmask(SIG_BLOCK,&newmask,&oldmask) < 0)
printf("SIG_BLOCK error");
sleep(5);
if(sigpending(&pendmask) < 0)
printf("sigpending error");
if(sigismember(&pendmask,SIGQUIT))
printf("\nSIGQUIT pending\n");
if(sigprocmask(SIG_SETMASK,&oldmask,NULL) <0)
printf("SIG_SETMASK error");
printf("SIGQUIT unblocked\n");
sleep(5);
exit(0);
}
static void sig_quit(int signo){
printf("caught SIGQUIT\n");
if(signal(SIGQUIT,SIG_DFL) == SIG_ERR)
printf("can't reset SIGQUIT");
}
这个是上一层应用程序的调用 设置信号处理的函数。而实现signal函数的sigaction是比较底层的调用。