• 信号处理函数(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

  • 相关阅读:
    IOS多态在项目中的应用
    经济博弈题-逻辑思维-算法-海盗分金币
    iOS weak底层实现原理
    Two Sum
    HTTP与HTTPS的理解
    iOS 加锁的方式
    PHP 打印前一天的时间
    PHP 遍历文件夹下的文件以及子文件夹
    PHP 获取url里文件的扩展名
    vi 编辑器基本命令
  • 原文地址:https://www.cnblogs.com/yongdaimi/p/8124691.html
Copyright © 2020-2023  润新知