攔截Signal是一件很帥氣的事情
可惜樓主太廢,原理理解不能,只能使用現成的CODE..
默記以下CODE,你將得到世界
void(*install_disp(int signo,void(*disp)(int)))(int) { struct sigaction act; struct sigaction oldact; act.sa_handler = disp; sigemptyset(&act.sa_mask); act.sa_flags = SA_RESTART; if(sigaction(signo,&act,&oldact) == -1)return(SIG_ERR); return(oldact.sa_handler); }
程式加完以上的CODE之後,就可以對信號進行攔截了
攔截的方法:
首先先在程式外面建立一個函數
void proc_sig_exit(int q) { printf("got SIGQUIT signal.\n"); }
建立完成之後,在main裡面執行"安裝"的動作
void proc_sig_exit(int q) { install_disp(SIGQUIT,proc_sig_exit); }
安裝完之後就會用指定的函數處理指定的信號啦
至於說有哪些信號可以攔截,就參考這裡吧
全站熱搜
留言列表