软中断信号(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 "); 10 is_quit = true; 11 } 12 13 void* do_work(void* arg) 14 { 15 int num = 0; 16 printf("start "); 17 while(!is_quit){ 18 num++; 19 printf("running %d ... ", num); 20 sleep(2); 21 } 22 printf("end "); 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