首页 > 其他 > 详细

信号补充

时间:2019-11-28 22:44:14      阅读:105      评论:0      收藏:0      [点我收藏+]

 

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <unistd.h>
#include <string.h>
#include <strings.h>
#include <errno.h>

#include <sys/stat.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <fcntl.h>
#include <signal.h>

void doSig(int num)
{
    printf("i am doSig\n");
    printf("%d\n",num);
}

void printSigset(const sigset_t *s)
{
    for(int i = 1;i < 32;i++)
    {
        if(sigismember(s,i) == 1)
            printf("1");
        else
            printf("0");
    }    
    printf("\n");
}

int main(int argc, char **argv)
{
    sigset_t p;    
    printf("sizeof sigset_t = %d\n",sizeof(sigset_t));
    
    sigemptyset(&p);
    sigaddset(&p,SIGQUIT);// ctrl + z
    sigprocmask(SIG_BLOCK,&p,NULL);// 设置阻塞信号集

    struct sigaction s;
    s.sa_handler = doSig;
    s.sa_flags = 0;
    sigemptyset(&s.sa_mask);

    sigaction(SIGINT,&s,NULL);

    while(1)
    {
        sleep(1);
        sigpending(&p);    
        printSigset(&p);
    }
    
    return 0;
}

 

 

sizeof sigset_t = 128
0000000000000000000000000000000
0000000000000000000000000000000
0000000000000000000000000000000
0000000000000000000000000000000
0000000000000000000000000000000
^\0010000000000000000000000000000
0010000000000000000000000000000
0010000000000000000000000000000
0010000000000000000000000000000
0010000000000000000000000000000
^\^\0010000000000000000000000000000
0010000000000000000000000000000
0010000000000000000000000000000
0010000000000000000000000000000
^Ci am doSig
2
0010000000000000000000000000000
0010000000000000000000000000000
0010000000000000000000000000000
0010000000000000000000000000000

 

信号补充

原文:https://www.cnblogs.com/xiangtingshen/p/11954311.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!