zoukankan      html  css  js  c++  java
  • 信号处理函数(2)-sigismember()

    定义:
    int sigismember(const sigset_t *set,int signum);
     
    表头文件:
    #include<signal.h>
     
    说明:
    sigismember()用来测试参数signum 代表的信号是否已加入至参数set信号集里。如果信号集里已有该信号则返回1, 否则返回0。
     
    返回值:
    信号集已有该信号则返回1, 没有则返回0。如果有错误则返回-1。
     
    相关函数:
    sigemptyset, sigfillset, sigaddset, sigdelset
     
    错误代码:
    EFAULT 参数set指针地址无法存取
    EINVAL 参数signum 非合法的信号编号

    示例:

    #include <stdio.h>
    #include <signal.h>
    
    
    void printsigset(const sigset_t *set)
    {    
        int i;
        for (i = 1; i < 32; i++)
            if (sigismember(set, i) == 1) // 测试signum所代表的信号是否已加入参数set的
                // 信号集里,如果信号集里已有该函数则返回1,否则返回0
                putchar('1');
            else 
                putchar('0');
        puts("");
    }
    
    
    
    int main()
    {
        
        sigset_t s,p;
        sigemptyset(&s); // 清空信号集,置0
        sigaddset(&s, SIGINT); // 把信号集的某一个位置置1
        sigprocmask(SIG_BLOCK, &s, NULL); // 修改信号屏蔽字(SIG_BLOCK是添加)
        while(1) {
            sigpending(&p); // 读取当前进程的未决信号集
            printsigset(&p); // 打印信号集
            sleep(1);    
        }
    
        return 0;
    }

    运行结果:

    0000000000000000000000000000000
    0000000000000000000000000000000
    0000000000000000000000000000000
    0000000000000000000000000000000
    0000000000000000000000000000000
    0000000000000000000000000000000
    0000000000000000000000000000000
    0000000000000000000000000000000
    0000000000000000000000000000000
    0000000000000000000000000000000
    0000000000000000000000000000000
    0000000000000000000000000000000
    ^C0100000000000000000000000000000
    0100000000000000000000000000000
    0100000000000000000000000000000
    0100000000000000000000000000000
    0100000000000000000000000000000
    0100000000000000000000000000000
    0100000000000000000000000000000
    0100000000000000000000000000000
    0100000000000000000000000000000
    0100000000000000000000000000000
    0100000000000000000000000000000
    0100000000000000000000000000000
    0100000000000000000000000000000
    0100000000000000000000000000000
    0100000000000000000000000000000
    0100000000000000000000000000000
    0100000000000000000000000000000
    0100000000000000000000000000000
    0100000000000000000000000000000

  • 相关阅读:
    6:python2、python3 的区别及小数据池
    web前端----html表单操作
    web前端----html基础
    mysql数据库----索引原理与慢查询优化
    MySQL数据库----流程控制
    MySQL数据库----IDE工具介绍及数据备份
    MySQL数据库----数据锁
    MySQL数据库----事务处理
    MySQL数据库----事务
    MySQL数据库----函数
  • 原文地址:https://www.cnblogs.com/yongdaimi/p/8124691.html
Copyright © 2011-2022 走看看