信号屏蔽

#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;
}

posted on 2023-04-13 21:08  信奉上帝的小和尚  阅读(19)  评论(0编辑  收藏  举报

导航