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

  • 相关阅读:
    C# List的深复制(转)
    asp.net core控制台项目运行
    进度条界面控件
    给窗体做遮罩(另类做法)
    显示列表控件(引用SourceGrid)
    TimeExit 界面无点击定时退出类
    TimeHelp 获取时间戳转换类
    复旦大学2016--2017学年第一学期高等代数I期末考试情况分析
    复旦大学高等代数历届每周一题汇总
    复旦高等代数 I(16级)每周一题
  • 原文地址:https://www.cnblogs.com/yongdaimi/p/8124691.html
Copyright © 2011-2022 走看看