信号屏蔽
#include "stdio.h"
#include "signal.h"
#include "unistd.h"
void db_update(void) {
// 模拟数据库更新操作
for (int i = 0; i <= 5; i +=1) {
printf("更新数据库.\n");
sleep(1);
}
}
int main(void) {
// 要操作信号
int signum = SIGINT;
// 创建信号集
sigset_t sigset;
// 在信号集添加信号
sigaddset(&sigset, signum);
// 将设置号的信号集添加到信号屏蔽
// SIG_BLOCK 将新信号集中的信号添加到之前的信号集中
// SIG_UNBLOCK 将新信号集中的信号在之前的信号集中删除
// SIG_SETMASK 将之前的信号集替换成当前信号集
sigset_t old_set; // 获取未设置之前的信号集
sigprocmask(SIG_SETMASK, &sigset, &old_set);
db_update();
return 0;
}