- 1、本文档共37页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
sigsuspend函数 上面已经说明,更改进程的信号屏蔽字可以阻塞或解除阻塞所选择的信号。使用这种技术可以保护不希望由信号中断的代码临界区。如果希望对一个信号解除阻塞,然后 pause以等待以前被阻塞的信号发生,则又将如何呢?假定信号是SIGINT,实现这一点的一种不正确的方法是:如果在解除对SIGINT的阻塞和 pause之间产生了SIGINT信号,则此信号被丢失。这是早期的不可靠信号机制的另一个问题。为了纠正此问题,需要在一个原子操作中实现恢复信号屏蔽字,然后使进程睡眠,这种功能是由sigsuspend()函数提供的。 # includesignal.h int sigsuspend (const sigset t, *sigmask); 返回:-1,errno设置为EINTR。 进程的信号屏蔽字设置为由sigmask指向的值。在捕捉到一个信号或发生了一个会终止该进程的信号之前,该进程也被挂起;如果捕捉到一个信号而且从该信号处理程序返回,则sigsuspend返回,并且该进程的信号屏蔽字设置为调用 sigsuspend之前的值。 abort函数 前面已提及abort()函数的功能是使程序异常终止。 #includestdlib.h void abort (void); 此函数将SIGABRT信号发送给调用进程。进程不应忽略此信号。 ANSI C要求若捕捉到此信号而且相应信号处理程序返回,abort()仍不会返回到其调用者。如果捕捉到此信号,则信号处理程序不能返回的唯一方法是它调用exit()、_exit()、longjmp()或siglongjmp()。POSIX.1也说明abort覆盖了进程对此信号的阻塞和忽略。让进程捕捉 SIGABRT的意图是:在进程终止之前由其执行所需的清除操作。如果进程并不在信号处理程序中终止自己,POSIX.1说明当信号处理程序返回时,abort()终止该进程。 system函数 POSIX.2要求system()忽略SIGINT和SIGQUIT,阻塞SIGCHLD。 sleep函数 sleep函数的原型如下: # includeunistd.h unsigned int sleep(unsigned int); 返回:0或未睡的秒数。 此函数使调用进程被挂起直到: (1)已经过了seconds所指定的时间。 (2)该进程捕捉到一个信号并从信号处理程序返回。 在线教务辅导网: 更多课程配套课件资源请访问在线教务辅导网 第12章 信号量编程 知识点: 信号量的作用以及常见的信号量介绍 与信号量有关的常见函数使用方法 信号的概念 除了在正常方式下运行客户及服务器外,还要检查此例的许多边界条件:客户和服务器都启动时是什么情况;如果服务器主机崩溃则客户又会是什么情况等。通过观察这些情况,弄清网络层次发生的一些事情,以及它们是如何反映到套接口API的,将对这些层次的工作原理有更多的认识,并知道如何编写应用代码来处理这些情形。这些就是各种信号出现后应该解决的问题。 信号是发生某事件时对进程的通知,有时称为软中断。它一般是异步的,这就是说,进程不可能提前知道信号发生的时间。 每个信号都有一个处理办法(disposition),也称为与信号相关联的行为(action)。通过调用函数sigaction()来设置一个信号的处理办法,并有3个选择。 (1)可以提供一个情报函数,在信号发生时随即调用。这个函数称为信号处理程序(signal handler),而此行为则称为捕获(catching)信号。有两个信号不能被捕获,即SIGKILL和SIGSTOP。函数由信号值这个单一的整数参数来调用且无返回值,所以其函数原型为: void handler (int signo); 对于多数信号来说,调用函数sigaction()并指定信号发生时调用的函数是捕获信号所需的所有事情,但稍后将看到,有些信号(如SIGIO、SIGPOLL和SIGURG)还要求捕获它们的进程要在指定调用函数后进行其他相关操作。 (2)可以通过设置信号的处理办法为SIG_IGN来忽略它,但SIGKILL和SIGSTOP这两个信号不能忽略。 (3)可以设置信号的处理办法为SIG_DFL来设置默认处理办法。一般地说,默认处理办法是在接收到信号时终止进程,特定信号还在当前工作目录产生一个进程的核心映像。个别信号的默认处理办法是忽略,例如SIGCHLD和SIGURG,就是要用的默认处理办法是忽略的两个信号。 每个信号都有一个名字,这些名字都以3个字符SIG开头,不同的操作系统有不同数目的信号。一般在头文件signal.h中,这些信号都被定义为正整数(信号编号)。没有一个信号编号为0,因为kill函数对信
您可能关注的文档
- JAVA程序设计教程 第2章 Java概述新.ppt
- JAVA程序设计教程 第3章 Java语言基础新.ppt
- JAVA程序设计教程 第4章 类和对象新.ppt
- JAVA程序设计教程 第6章 字符、字符串、数组新.ppt
- JAVA程序设计教程 第7章 图形用户界面的设计与实现新.ppt
- JAVA程序设计教程 第8章 Applet新.ppt
- Java程序设计教程 赵辉 第1章 Java语言概述新.ppt
- Java程序设计教程 赵辉 第2章 Java程序设计基础新.ppt
- Java程序设计教程 赵辉 第5章 Java基本类库新.ppt
- Java程序设计教程 赵辉 第7章 GUI设计基础新.ppt
- 金融产品2024年投资策略报告:积极适应市场风格,行为金融+机器学习新发现.pdf
- 交运物流2024年度投资策略:转型十字路,峰回路又转(2023120317).pdf
- 建材行业2024年投资策略报告:板块持续磨底,重点关注需求侧复苏.pdf
- 宏观2024年投资策略报告:复苏之路.pdf
- 光储氢2024年投资策略报告:复苏在春季,需求的非线性增长曙光初现.pdf
- 公用环保2024年投资策略报告:电改持续推进,火电盈利稳定性有望进一步提升.pdf
- 房地产2024年投资策略报告:聚焦三大工程,静待需求修复.pdf
- 保险2024年投资策略报告:资产负债匹配穿越利率周期.pdf
- 政策研究2024年宏观政策与经济形势展望:共识与分歧.pdf
- 有色金属行业2024年投资策略报告:新旧需求共振&工业原料受限,构筑有色大海星辰.pdf
最近下载
- 4-1 中化泉州石化 3 万吨年干气脱硫制二甲基亚砜项目设备设计说明书(含塔设备计算说明、换热器设计结果、设备一览表).pdf
- 工程造价_横湖桥商业楼土建工程量清单报价.docx VIP
- 浙江师范大学行知学院 学生手册.pdf
- 2025年辽宁沈阳市文体旅产业发展集团有限公司招聘笔试参考题库附带答案详解.pdf
- 川崎病患儿的护理课件.pptx VIP
- 2024年东莞市东华高级中学自主招生数学试卷附答案解析 .pdf
- 中医馆客服知识培训课件.pptx
- 辽宁沈阳市文体旅产业发展有限公司招聘笔试题库2025.pdf
- 全国公开课大赛一等奖小学一年级下册数学人教版《七巧板》课件.pptx
- 辽宁沈阳市文体旅产业发展集团有限公司招聘笔试题库2025.pdf
文档评论(0)