- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
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函数对信号编号0有特殊的应用。常见的信号量如表12-1所示。 signal函数
您可能关注的文档
- LED封装技术与应用 教学课件 作者 沈洁 主编 led5 1.ppt
- Linux 网络服务器配置与管理 教学课件 作者 郇涛 陈萍 Linux网络服务器配置与管理1.ppt
- Linux 网络服务器配置与管理 教学课件 作者 郇涛 陈萍 Linux网络服务器配置与管理2.ppt
- Linux 网络服务器配置与管理 教学课件 作者 郇涛 陈萍 Linux网络服务器配置与管理3.ppt
- Linux 网络服务器配置与管理 教学课件 作者 郇涛 陈萍 Linux网络服务器配置与管理4.ppt
- Linux 网络服务器配置与管理 教学课件 作者 郇涛 陈萍 Linux网络服务器配置与管理5.ppt
- Linux 网络服务器配置与管理 教学课件 作者 郇涛 陈萍 Linux网络服务器配置与管理6.ppt
- Linux 网络服务器配置与管理 教学课件 作者 郇涛 陈萍 Linux网络服务器配置与管理7.ppt
- Linux 网络服务器配置与管理 教学课件 作者 郇涛 陈萍 Linux网络服务器配置与管理8.ppt
- Linux 网络服务器配置与管理 教学课件 作者 郇涛 陈萍 Linux网络服务器配置与管理9.ppt
- Linux/UNIX网络编程甘刚电子教案 第13章 原始套接字与数据链路访问编程.ppt
- Linux操作案例初级教程 教学课件 作者 杨培添 红旗LINUX案例教程第1章.ppt
- Linux操作案例初级教程 教学课件 作者 杨培添 红旗LINUX案例教程第2章.ppt
- Linux操作案例初级教程 教学课件 作者 杨培添 红旗LINUX案例教程第3章.ppt
- Linux操作案例初级教程 教学课件 作者 杨培添 红旗LINUX案例教程第4章.ppt
- Linux操作案例初级教程 教学课件 作者 杨培添 红旗LINUX案例教程第5章.ppt
- Linux操作案例初级教程 教学课件 作者 杨培添 红旗LINUX案例教程第6章.ppt
- Linux操作系统 第2版 教学课件 作者 刘丽霞 杨宇 第1章 初识Linux.ppt
- Linux操作系统 第2版 教学课件 作者 刘丽霞 杨宇 第2章 安装Linux操作系统.ppt
- Linux操作系统 第2版 教学课件 作者 刘丽霞 杨宇 第3章 图形界面与命令行.ppt
最近下载
- 3#T8030-25U塔吊安拆施工方案.docx VIP
- 《临床研究协调员(CRC)从业能力要求》(TZJPA 001-2024).pdf VIP
- 《北美国际护理诊断定义与分类(2021-2023)》修订解读.pptx VIP
- 规范《DGJ32J33-2006-江苏省建筑安装工程施工技术操作规程-地面工程》.pdf VIP
- 《智能网联汽车概论(活页式)》全套教学课件.pptx
- ABB机器人通讯介绍.pptx VIP
- DB32╱T 3839-2020 水闸泵站标志标牌规范.docx
- Word页眉页脚模板06.docx VIP
- 04J008挡土墙图集标准.pdf
- QC成果-提高大型储罐现场防腐质量验收一次合格率.pdf VIP
文档评论(0)