1. 程式人生 > >C/C++ signal 信號處理函數

C/C++ signal 信號處理函數

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 信號處理函數