功能描述:设定对信号屏蔽集内的信号的处理方式(阻塞或不阻塞)。
用法:
#include <signal.h>
int sigprocmask(int how, const sigset_t *set, sigset_t *oldset);
参数:
how:用于指定信号修改的方式,可能选择有三种:
SIG_BLOCK //加入信号到进程屏蔽。
SIG_UNBLOCK //从进程屏蔽里将信号删除。
SIG_SETMASK //将set的值设定为新的进程屏蔽。

set:为指向信号集的指针,在此专指新设的信号集,如果仅想读取现在的屏蔽值,可将其置为NULL。
oldset:也是指向信号集的指针,在此存放原来的信号集。
返回说明:
成功执行时,返回0。失败返回-1,errno被设为EINVAL。

#include <stdio.h>
#include <unistd.h>
#include <signal.h>

void handler(int sig)

{

printf("Deal SIGINT");  //SIGINT信号处理函数

}

int main()
{
    sigset_t newmask;
    sigset_t oldmask;
    sigset_t pendmask;

struct sigaction act;

act.sa_handler = handler;  //handler为信号处理函数首地址

sigemptyset(&act.sa_mask);

act.sa_flags = 0;

sigaction(SIGINT, &act, 0);  //信号捕捉函数,捕捉Ctrl+C

sigemptyset(&newmask);//初始化信号量集
    sigaddset(&newmask, SIGINT);//将SIGINT添加到信号量集中

sigprocmask(SIG_BLOCK, &newmask, &oldmask);//将newmask中的SIGINT阻塞掉,并保存当前信号屏蔽字到Oldmask

sleep (5);//休眠5秒钟,说明:在5s休眠期间,任何SIGINT信号都会被阻塞,如果在5s内收到任何键盘的Ctrl+C信号,则此时会把这些信息存在内核的队列中,等待5s结束后,可能要处理此信号。 
    sigpending(&pendmask);//检查信号是悬而未决的,

if (sigismember(&pendmask, SIGINT))//SIGINT是悬而未决的。所谓悬而未决,是指SIGINT被阻塞还没有被处理
    {
        printf("/nSIGINT pending/n");
    }
    sigprocmask(SIG_SETMASK, &oldmask, NULL);//恢复被屏蔽的信号SIGINT

//此处开始处理信号,调用信号处理函数

printf("SIGINT unblocked/n");

return (0);

}

注意:上面还有一种方式:

sigprocmask(SIG_BLOCK, &newmask, NULL); //阻塞

sigprocmask(SIG_UNBLOCK, &newmask, NULL);//取消阻塞

sigprocmask()函数实例详解,设置信号规定时间堵塞,取消信号堵塞相关推荐

  1. python编程入门与案例详解课后题答案-Python入门之三角函数sin()函数实例详解

    描述 sin()返回的x弧度的正弦值. 语法 以下是sin()方法的语法: importmath math.sin(x) 注意:sin()是不能直接访问的,需要导入math模块,然后通过math静态对 ...

  2. python编程入门与案例详解pdf-Python入门之三角函数sin()函数实例详解

    描述 sin()返回的x弧度的正弦值. 语法 以下是sin()方法的语法: importmath math.sin(x) 注意:sin()是不能直接访问的,需要导入math模块,然后通过math静态对 ...

  3. python教程三角函数_Python入门之三角函数tan()函数实例详解

    描述 tan() 返回x弧度的正弦值. 语法 以下是 tan() 方法的语法: import math math.tan(x) 注意:tan()是不能直接访问的,需要导入 math 模块,然后通过 m ...

  4. python format函数实例_python中强大的format函数实例详解

    python中format函数用于字符串的格式化 自python2.6开始,新增了一种格式化字符串的函数str.format(),此函数可以快速处理各种字符串. 语法 它通过{}和:来代替%. 请看下 ...

  5. python画tan_Python入门之三角函数tan()函数实例详解

    描述 tan() 返回x弧度的正弦值. 语法 以下是 tan() 方法的语法: import math math.tan(x) 注意:tan()是不能直接访问的,需要导入 math 模块,然后通过 m ...

  6. python回调函数实例详解_Python回调函数用法实例详解

    本文实例讲述了Python回调函数用法.分享给大家供大家参考.具体分析如下: 一.百度百科上对回调函数的解释: 回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函 ...

  7. 100个pandas函数实例详解(一)

    Hi,我是山月. 之前给大家介绍了100个pandas常用函数的汇总,不知道大家有没有印象. 从今天开始来我会根据具体的实例来介绍这些函数,希望能帮助大家进行巩固学习. 今天给大家介绍的是统计汇总函数 ...

  8. C语言math.h中的常用函数实例详解

    1.绝对值 2.取整和取余 3.三角函数 4.反三角函数 5.双曲三角函数 6.指数和对数 7.标准化浮点数 8.多项式 9.数学错误计算处理 1.绝对值 函数原型: int abs(int x); ...

  9. php类和自定义函数实例,php中三个调用用户自定义函数实例详解

    在php中调有自定义函数,经常会用到call_user_func函数.call_user_func_array函数.call_user_func函数. 1,call_user_func函数类似于一种特 ...

最新文章

  1. 乾坤合一~Linux设备驱动之终端设备驱动
  2. final关键字的这8个小细节,你get到几个?
  3. Linux(Ubuntu14.04)下安装Anaconda和Spyder
  4. 保持边缘平滑的图像(曲率)
  5. Spring Boot系列二 Spring @Async异步线程池用法总结
  6. 前端学习(1386):多人管理项目6骨架
  7. gnu screen的用法
  8. 36.母板的介绍与使用
  9. Box2DWeb_03之Shape
  10. Sturts2 与android的图片上传交互
  11. 【数据结构】栈的基本操作
  12. 立创EDA学习笔记(3)——创建元件封装
  13. 初中信息技术计算机ppt课件,初中信息技术计算机ppt课件.ppt
  14. html母亲节主题网页源码jd
  15. 程序员高管修炼之道!
  16. AWS云计算题目总结
  17. signature=cb30417dfa65eef445418827e0f0e0e6,以太坊P2P网络节点初始化
  18. 问题1313:C语言-立体几何
  19. 王建伟c语言入门,C语言【共43课时】_C/C++/C#课程-51CTO学院
  20. ubuntu-关机时黑屏左上角只有一个横着的光标一直闪烁长时间无法关机

热门文章

  1. 给 python 初学者的四条忠告_给 python 初学者的四条忠告-Go语言中文社区
  2. 量子通信入门相关书籍
  3. 确定性有穷自动机(DFA算法) 非确定性有穷自动机(NFA算法)
  4. 第77课 交作业啦(递归算法)
  5. lamp里php 的升级,lamp架构之升级php版本
  6. ajax 进度条 php,php – Jquery :: Ajax提供进度条?
  7. 机器人炒饭小块头一一_一罐好饭,智能机器人炒饭出好味道,小块头坚守本心匠心制作!...
  8. pythoninterp error_Python numpy.interp方法代码示例
  9. docker 安装mysql_docker|docker安装mysql数据库
  10. PHP笔记-AES加解密(PHP7)