zoukankan      html  css  js  c++  java
  • 信号补充

    #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

  • 相关阅读:
    结对(求数组的最大子数组和)
    结对3(求一维数组最大子数组的和扩展)
    结对3(电梯调度需求分析)
    结对开发2(求二维数组的最大子数组和)
    四则运算3(四则运算2程序的扩展)
    四则运算2代码测试
    四则运算2程序及运行
    C++输出四则运算设计题的思路
    C++编程显示四则运算题目
    软件课外读物阅读计划
  • 原文地址:https://www.cnblogs.com/xiangtingshen/p/11954311.html
Copyright © 2011-2022 走看看