10.13 sigpending函数

函数sigpending被阻塞发送并且当前被调用该函数的进程挂起的信号,这个信号集通过参数set返回.

  1. #include<signal.h>
  2. int sigpending(sigset_t*set);
  3. Returns:0if OK,-1 on error.

Example

  1. #include"apue.h"
  2. staticvoid sig_quit(int);
  3. int main(void)
  4. {
  5. sigset_t newmask,oldmask,pendmask;
  6. if(signal(SIGQUIT, sig_quit)== SIG_ERR)
  7. err_sys("can‘t catch SIGQUIT");
  8. /*
  9. * Block SIGQUIT and save current signal mask
  10. *
  11. */
  12. sigemptyset(&newmask);
  13. sigaddset(&newmask, SIGQUIT);
  14. if(sigprocmask(SIG_BLOCK,&newmask,&oldmask)<0)
  15. err_sys("SIG_BLOCK error");
  16. sleep(5);/*SIGOUT here will remain pending*/
  17. if(sigpending(&pendmask)<0)
  18. err_sys("sigpending error");
  19. if(sigismember(&pendmask, SIGQUIT))
  20. printf("\nSIGQUIT pending\n");
  21. /*
  22. * Restore signal mask whick unblocks SIGQUIT.
  23. */
  24. if(sigprocmask(SIG_SETMASK,&oldmask, NULL)<0)
  25. err_sys("SIG_SETMASK error");
  26. printf("SIGQUIT unblocked\n");
  27. sleep(5);/*SIGQUIT here will terminate with core file */
  28. exit(0);
  29. }
  30. staticvoid sig_quit(int signo)
  31. {
  32. printf("caught SIGQUIT\n");
  33. if(signal(SIGQUIT, SIG_DFL)== SIG_ERR)
  34. err_sys("can‘t reset SIGQUIT");
  35. }

执行效果如下图:

  1. [email protected]:~/UnixProgram/Chapter10$./10_15.exe
  2. ^\^\^\
  3. SIGQUIT pending
  4. caught SIGQUIT
  5. SIGQUIT unblocked
  6. ^\Quit
  7. [email protected]:~/UnixProgram/Chapter10$./10_15.exe
  8. SIGQUIT unblocked
  9. [email protected]:~/UnixProgram/Chapter10$

来自为知笔记(Wiz)

时间: 2025-01-06 02:20:25

10.13 sigpending函数的相关文章

10.12 sigprocmask函数

在10.8节中我们提到进程的掩码是一个当前阻塞信号发送到进程的信号集合.一个进程可以查看其信号掩码,改变其信号掩码,或者同时执行这两个操作,通过调用函数sigprocmask来实现上述要求. #include <signal.h> int sigprocmask(int how, const sigset_t *restrict set, sigset_t *restrict oset); return:0 if OK, -1 on error. 首先,如果oset是一个非空指针,那么当前进程

复习2014061201:国际金融(10~13)

现行体系的基本内容 v  取消平价和中心汇率,允许会员国自由选择汇率制度,承认浮动汇率制的合法性. v  减弱与消除黄金的货币作用,黄金不再作为各国货币定值的标准:废除黄金官价,官方的黄金交易可按市价交易:取消会员国向IMF缴付黄金的规定. v  SDRs成为主要的储备资产--储备资产多元化. v  增加IMF基金份额,加强IMF对国际清偿能力的监督. v  扩大对发展中国家的资金融通,解决其国际收支问题. 现行体系的特点 浮动汇率长期化. 储备货币多元化,但美元作为关键货币的地位并没结束,美元

10.11 Linux网络相关 10.12 firewalld和netfilter 10.13 netfilter5表5链介绍 10.14 iptables语法

10.11 Linux网络相关 10.12 firewalld和netfilter 10.13 netfilter5表5链介绍 10.14 iptables语法 扩展(selinux了解即可) selinux教程 http://os.51cto.com/art/201209/355490.htm selinux pdf电子书 http://pan.baidu.com/s/1jGGdExK 10.11 linux网络相关 -ifconfig 命令在centos7 是没有的,需要安装yum inst

分享PHP中的10个实用函数

PHP的功能越来越强大,里面有着非常丰富的内置函数.资深的PHP程序员对它们可能都很熟悉,但很多参加PHP培训的PHP初学者,仍然对一些非常有用的函数不太熟悉.这篇摘抄自兄弟连的文章里,我们就列举10个你或许不了解但实用的PHP函数,供大家参考和学习. 1. php_check_syntax 这个函数可以用来检查特定文件中的PHP语法是否正确. 使用方法: <?php $error_message = ""; $filename = "./php_script.php&

每周进度及工作量统计——2016.10.06-2016.10.13

项目:词频统计--web支持 项目类型:个人项目 项目完成情况:已完成 项目改进:新项目 项目日期:2016.10.9-2016.10.10 C类别 C内容 S开始时间 E结束时间 I间隔 T净时间 P预计时间 分析 设计  9:12  10:37  55  30  20 学习 查阅资料  10:37  11:46  0  69  30 编码 实现上传  16:03  21:53  127  223  180 优化 改进 9:56 17:41  149  316  120 文档 程序说明,随笔

循环结构程序设计 10.13

<C语言程序设计>实验报告 学 号 160809217 姓 名 李想 专业.班 计科16-2班 学    期 2016-2017 第1学期 指导教师 黄俊莲 吉吉老师 实验地点 C05 机 器 号 时    间 2016年 10 月   13 日    6   周 周四  1.2 节 截至日期 2016.10.13 11:50 实验任务清单 实验3-1 分别使用while循环.do while循环.for循环求                                          

Python学习(13)函数

目录 Python 函数 函数调用 匿名函数 return语句 变量作用域 Python 函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也可以自己创建函数,这被叫做用户自定义函数. 定义一个函数 你可以定义一个由自己想要功能的函数,以下是简单的规则: 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号(). 任何传入参数和自变量必须放在圆括号中间.圆

PHP中的10个实用函数

PHP的功能越来越强大,里面有着非常丰富的内置函数.资深的PHP程序员对它们可能都很熟悉,但很多的PHP学习者,仍然对一些非常有用的函数不太熟悉.这篇文章里,我们就列举10个你或许不了解但实用的PHP函数,供大家参考和学习. 1.php_check_syntax 这个函数可以用来检查特定文件中的PHP语法是否正确. 使用方法: php$error_message ="";$filename ="./php_script.php";if(!php_check_synt

10.11 Linux网络相关 10.12 firewalld和netfilter 10.13 ne

七周三次课 10.11 Linux网络相关 10.12 firewalld和netfilter 10.13 netfilter5表5链介绍 10.14 iptables语法 10.11 Linux网络相关 Linux网络相关 10.12 firewalld和netfilter netfilter为centos6的防火墙 关闭filter 开启netfilter并查看默认规则 10.13 netfilter5表5链介绍 小结:如果经过本机,PREROUTING----->INPUT---->OU