信号补充

Posted xiangtingshen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了信号补充相关的知识,希望对你有一定的参考价值。

 

#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
");
    printf("%d
",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("
");
}

int main(int argc, char **argv)
{
    sigset_t p;    
    printf("sizeof sigset_t = %d
",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); // sa_mask 时一个临时的值,执行完handler函数之后,就不起作用了 mask |= 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

 

技术图片

 

 

以上是关于信号补充的主要内容,如果未能解决你的问题,请参考以下文章

vs 2010代码片段

vs 2010代码片段

js常用代码片段

Python多进程,同步互斥,信号量,锁补充上一篇文章

26个jQuery代码片段使用技巧

信号补充