Linux中singal信号的作用

void(* signal(int sig,void(* func)(int)))(int);

 设置处理信号的功能

头文件为:#include <signal.h>

指定使用sig指定的信号编号处理信号的方法。 参数func指定程序可以处理信号的三种方式之一:

1、默认处理(SIG_DFL):信号由该特定信号的默认动作处理。

2、忽略信号(SIG_IGN):忽略信号,即使没有意义,代码执行仍将继续。
3、函数处理程序:定义一个特定的函数来处理信号。

其中忽略并不是没有处理信号或者接收,只是它接收后没有做任何改变。

其中sig常见的参数有以下几种:

 返回值:

singal函数的返回值是一个函数指针,该指针指向之前与指定信号相关联的处理函数。这允许你在将信号处理程序设置为新函数之前,先保存旧的处理程序,以便稍后进行恢复或其他操作。

通俗的说就是,当你调用 signal 函数设置一个新的信号处理函数时,它会返回之前与指定信号相关联的处理函数的指针这是为了方便你在需要的时候可以重新安装之前的处理程序,或者在信号处理程序执行完毕后恢复到原来的处理方式。

例子:

#include <stdio.h>
#include <signal.h>

// 自定义信号处理函数
void new_handler(int signum) {
    printf("New handler: Received signal %d\n", signum);
}

int main() {
    // 设置 SIGINT 信号的新处理函数为 new_handler
    void (*old_handler)(int);
    old_handler = signal(SIGINT, new_handler);

    // 模拟一段时间后恢复原来的处理函数
    sleep(5);

    // 恢复之前的处理函数
    signal(SIGINT, old_handler);

    while (1) {
        // 程序的主循环
    }

    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

钜锋王老师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值