Linux中singal信号的作用

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

 设置处理信号的功能

头文件为:#include

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

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

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

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

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

Linux中singal信号的作用_第1张图片

 返回值:

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

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

例子:

#include 
#include 

// 自定义信号处理函数
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;
}

你可能感兴趣的:(算法,数据结构)