C/C++ signal 信号处理函数

本文介绍了软中断信号(signal)的概念及其用途,信号用于通知进程发生异步事件而不传递数据。文章展示了如何使用`kill-l`查看系统支持的信号,并提供了一个使用`signal`函数处理SIGUSR1信号的具体示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

软中断信号(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.youkuaiyun.com/zzyoucan/article/details/9235685

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值