攔截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); }

安裝完之後就會用指定的函數處理指定的信號啦

至於說有哪些信號可以攔截,就參考這裡

smartPG 發表在 痞客邦 PIXNET 留言(0) 人氣()