0
点赞
收藏
分享

微信扫一扫

基于VS2019 C++的跨平台(Linux)开发(1.4.3)——信号屏蔽

楚木巽 2022-03-23 阅读 55

信号集操作函数

sigprocmask函数 

how参数的含义

 

sigpending函数

示例代码

#include <unistd.h>
#include <signal.h>
#include <stdio.h>

void printsigset(sigset_t* set)
{
        int i;
        for (i=1;i<64;i++)
        {
                if (sigismember(set,i))
                        putchar('1');
                else
                        putchar('0');
        }
        puts("");
}
void handler(int sig)
{
        if (sig==SIGQUIT)
        {
                sigset_t s;
                sigemptyset(&s);
                sigaddset(&s,SIGINT);
                sigprocmask(SIG_UNBLOCK,&s,NULL);
        }

        if (sig==SIGINT)
        {
                printf("recv a signal %d\n",sig);
        }
}
int main(void)
{
        sigset_t s;
        sigset_t p;
        signal(SIGINT,handler);
        signal(SIGQUIT,handler);
        sigemptyset(&s);
        sigaddset(&s,SIGINT);
        sigprocmask(SIG_BLOCK,&s,NULL);
        for (;;)
        {
                sigpending(&p);
                printsigset(&p);
                sleep(1);
        }
}

 

举报

相关推荐

0 条评论