软中断信号(signal,又简称为信号)用来通知进程发生了异步事件。进程之间可以互相通过系统调用kill发送软中断信号。
内核也可以因为内部事件而给进程发送信号,通知进程发生了某个事件。
注意,信号只是用来通知某进程发生了什么事件,并不给该进程传递任何数据。
kill -l ##可以列举当前系统支持的信号
void (*signal(int sig,void (*func)(int)))(int) ##singal 原型
看例子吧。
1 #include2 #include3 #include4 #include5 6bool is_quit =false; 7 8void signal_handle(int signal_num){ 9 printf("receive the signal SIGUSR1\n"); 10 is_quit =true; 11} 1213void* do_work(void* arg) 14{ 15int num =0; 16 printf("start\n"); 17while(!is_quit){ 18 num++; 19 printf("running %d ... \n", num); 20 sleep(2); 21 } 22 printf("end\n"); 23return NULL; 24} 2526int 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); 32return0; 33 }
更多信号函数参考:http://blog.csdn.net/zzyoucan/article/details/9235685