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