MST

星途 面试题库

面试题:C语言中如何临时屏蔽指定信号

在C语言的Linux环境下,假设你要临时屏蔽SIGINT信号(键盘中断信号),请写出实现该功能的代码片段,并简要说明相关函数的作用。
42.7万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
#include <stdio.h>
#include <signal.h>

int main() {
    sigset_t set;
    // 初始化信号集
    sigemptyset(&set);
    // 将SIGINT信号添加到信号集中
    sigaddset(&set, SIGINT);
    // 屏蔽信号集中的信号
    sigprocmask(SIG_BLOCK, &set, NULL);

    // 这里可以执行你不想被SIGINT中断的代码

    // 解除对SIGINT信号的屏蔽
    sigprocmask(SIG_UNBLOCK, &set, NULL);

    return 0;
}
  1. sigemptyset函数:作用是清空一个信号集,使其不包含任何信号。这里用于初始化set信号集。
  2. sigaddset函数:作用是将指定的信号添加到信号集中。这里将SIGINT信号添加到set信号集中。
  3. sigprocmask函数:用于改变进程的信号屏蔽字。第一个参数SIG_BLOCK表示屏蔽信号集中的信号,SIG_UNBLOCK表示解除对信号集中信号的屏蔽。第二个参数是指向要操作的信号集的指针,第三个参数用于保存原来的信号屏蔽字,这里为NULL表示不保存。