linux下信号的处理(2)

在(1)中是最简单的信号处理函数,当你按两次Ctrl+c时,并没有两次输出,是因为这样的信号是不可靠信号,如果要让信号正确的让程序处理执行,我们必须让程序支持信号的嵌套。看代码

#include<stdio.h>
#include<unistd.h>
#include<signal.h>
int temp=0;
void signal_handle(int signo)
{
    printf("recive SIGINT/n");
    sleep(5);
    printf("The temp values is %d/n",temp++);
}
int main()
{
    struct sigaction act;
    act.sa_handler = signal_handle;
    //让信号支持嵌套
    act.sa_flags = SA_NOMASK;
   
    //安装信号处理函数
    sigaction(SIGINT,&act,NULL);
    while(1);
    return 0;
}

这里我们给出的信号帮定函数是sigaction,sigaction结构体的sa_handler是信号的处理函数,sa_flags是给出信号的处理方式,这里是让信号支持嵌套,这样信号就不会丢失。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值