【博客143】signal不同环境下的不同行为

内容: 记录signal注册信号处理函数的时候,在不同的环境下会有不同的行为

signal不同行为:

1.signal在unix和linux的c99环境下注册信号处理函数时,默认只处理一次,然后就恢复默认的处理方式

2.在linux非c99环境下注册信号处理函数时,触发一次后不会恢复默认的处理方式

测试:

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <signal.h>
 
void sigint_handler(int signo)
{
    printf("sigint_handler, signo: %d\n", signo);
}
 
int main(int argc, char *argv[])
{
    signal(SIGINT, sigint_handler);
 
    while (1) {
        sleep(1);
        printf("I am awake \n");
    }
 
    return 0;
}

结果:可以多次触发
在这里插入图片描述
加入c99编译并运行:
在这里插入图片描述
第二次收到ctrl+c时变为默认处理,进程结束。

大四学生一枚,文章均非抄袭或者模仿,均为原创,仅代表个人观点,如果文章有错误的地方,欢迎在下方提出,每条评论我都会去认真看并回复,同时感谢指正的前辈

发布了158 篇原创文章 · 获赞 34 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_43684922/article/details/103443767
今日推荐