C/C++ signal 信號處理函數
阿新 • • 發佈:2017-08-07
rec nbsp article sig 異步 pan urn 原型 pthread.h
軟中斷信號(signal,又簡稱為信號)用來通知進程發生了異步事件。進程之間可以互相通過系統調用kill發送軟中斷信號。
內核也可以因為內部事件而給進程發送信號,通知進程發生了某個事件。
註意,信號只是用來通知某進程發生了什麽事件,並不給該進程傳遞任何數據。
kill -l ##可以列舉當前系統支持的信號
void (*signal(int sig, void (*func)(int)))(int) ##singal 原型
看例子吧。
1 #include<stdio.h> 2 #include<pthread.h> 3 #include<unistd.h> 4#include<signal.h> 5 6 bool is_quit = false; 7 8 void signal_handle(int signal_num){ 9 printf("receive the signal SIGUSR1\n"); 10 is_quit = true; 11 } 12 13 void* do_work(void* arg) 14 { 15 int num = 0; 16 printf("start\n"); 17 while(!is_quit){ 18 num++;19 printf("running %d ... \n", num); 20 sleep(2); 21 } 22 printf("end\n"); 23 return NULL; 24 } 25 26 int main(int argc, char *argv[]) 27 { 28 pthread_t pid; 29 pthread_create(&pid, NULL, do_work, NULL); 30 signal(SIGUSR1, signal_handle); 31 pthread_join(pid, NULL);32 return 0; 33 }
更多信號函數參考:http://blog.csdn.net/zzyoucan/article/details/9235685
C/C++ signal 信號處理函數