- 1、本文档共19页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《Linux C从入门到精通》.明日科技.第11章.信号及信号处理
Logo Logo Logo Logo Logo Logo Logo Logo Logo Logo 信号概述 本讲大纲: 在终端中查看常见的信号 信号处理 在终端中查看常见的信号 在Linux这个多用户多进程的系统中,信号的存在是必然的,信号可以理解为一个软中断,在某个条件下,系统会发出某个信号给正在运行的进程,通知进程需要去执行某一特定的事件。 在前面的进程控制一章中,介绍了在终端中可以使用kill命令查看Linux系统中所支持的信号,这些信号都是以SIG开头的,接下来对Linux系统中常见的信号进行介绍。 11.1.1 在终端中查看常见的信号 在终端中输入命令“kill –l”可以列出Linux系统中的所有信号,如图11.1所示。 ? 说明:图11.1中,每一个信号类型前面都有一个正整数,这个正整数与信号代表相同的含义,称之为信号编号。 信号的宏定义和编号都定义在signal.h头文件中。在终端中可以通过输入命令“man 7 signal”查看Linux系统中支持的信号的详细含义,如图11.2所示。 信号处理 信号作为一种进程间通信的机制,主要用于处理异步事件,通常如果有信号发送到正在执行的进程中时,进程会有如下3种处理信号的方法: (1)默认信号的处理方法,系统为每一个信号都设置了默认的处理方法,通常为终止进程。 (2)捕捉信号,使进程执行指定的程序代码。 (3)忽略信号,对该信号不做任何处理。进程继续执行。 这3种处理捕捉到的信号的方法只是比较基本的方法,在实际应用中,对信号的处理并不会这么单一,例如,有些进程在执行时不希望被信号突然打断,但是还不希望忽略此信号,此时进程会将该信号挂起,在需要时在处理该信号。 产生信号 本讲大纲: kill()函数 raise()函数 alarm()函数 kill()函数 前面介绍的在终端中通过kill命令产生信号的方法,原理主要是kill命令调用了kill()函数实现了这个功能。 kill()函数主要用于向指定的进程或进程组发送信号,该函数的定义形式为: #includesys/types.h #includesignal.h Int kill(pid_t pid,int sig); 参数pid为进程号或进程组号;参数sig为要发送的信号类型的编号。 参数pid的取值范围不同,发送的信号触发的事件也是不同的,其取值范围如下: t pid=0:将信号发送到当前进程所在的进程组里的每一个进程。 t pid=-1:将信号发送给除了init进程外的当前进程中有权发送的所有进程。 t pid-1:将信号发送给进程组(-pid)中的每一个进程。 t 如果pid为一个有效的进程或进程组号,信号将发送给pid所代表的进程或进程组。 说明:如果参数sig为0,就没有信号可以发送,但会进行错误检查。 raise()函数 raise()函数主要用于将信号发送给当前进程。raise()函数的原型为: #includesignal.h Int raise(int sig); 参数sig为发送的信号类型的编号。 如果函数调用成功,返回值为0;如果调用失败,返回值为非0。 ? 说明:由raise()函数的功能可以知道,使用kill()函数也可以实现这一功能,如kill(getpid(),sig)。 alarm()函数 alarm()函数主要用于为发送的信号设定一个时间警告,使系统在设定的时间之后发送信号。alarm()函数的原型为: #includeunistd.h unsigned int alarm(unsigned int seconds); 参数seconds为设定的时间值。如果seconds设置为0值,那么alarm()函数设置的警告时钟将无效。 alarm()函数安排在seconds时间之后,发送一个信号SIGALRM给进程。在默认的情况下,进程接收到SIGALRM信号会终止运行。如果不希望终止进程,可以在进程捕获到该信号后修改默认的处理函数。 调用alarm()函数后,之前设置的任何警告时钟都取消。 标题 捕捉信号 本讲大纲: signal()函数 sigaction()函数 signal()函数 sigaction()函数 标题 信号的阻塞 本讲大纲: sigprocmask()函数 sigsuspend()函数 sigpending()函数 sigprocmask()函数 在前面介绍信号处理时,提到了信号的处理并没有那么的简单,而是有的时候进程并不希望被突如其来的信号中断当前的执行,也不希望信号从此被忽略掉,而是希望过一段时间之后再去处理这个信号,这种情况下,可以使用阻塞信号的方法来实现。能够实现信号阻塞的操作有3个系统调用函数,分别是sigpro
您可能关注的文档
- “保护环境 从我做起”世界环境日主题班会.ppt
- “全国低碳日”宣传.pptx
- “六西格玛管理”读书笔记_精益相关.doc
- “动中通”卫星通信链路分析及优化研究.doc
- “北京54 坐标系”转“西安80坐标系” 详细教程(图文.doc
- “十二五”时期我国收入分配差距-王小广课程考试答案100分.doc
- “单片机控制装置安装与调试”竞赛规程(教师组).doc
- “单片机控制装置安装与调试”赛项竞赛规程.doc
- “南饶北钱”传为佳话 50年内没有第二个饶宗颐.pptx
- “双星”模型的构建和应用.docx
- 介绍空白页组成.pdf
- 2025年云南三鑫职业技术学院单招语文测试模拟题库学生专用.docx
- 2025年心理咨询师考试卷及完整答案【各地真题】.docx
- 2025年云南省大理白族自治州选调生考试(行政职业能力测验)综合能力题库完美版.docx
- 2025年云南省丽江地区行政职业能力测验模拟试题一套.docx
- 2025年云南交通职业技术学院单招语文测试模拟题库a4版.docx
- 2025年期货从业资格之期货投资分析考试卷完整答案.docx
- 2025年二级建造师之二建机电工程实务考试卷一套.docx
- 2025年云南省西双版纳傣族自治州选调生考试(行政职业能力测验)综合能力题库新版.docx
- 2025年咨询工程师之工程项目组织与管理考试卷附完整答案【名师系列】.docx
最近下载
- 医院手术分级目录.xls VIP
- 《增强小学生英语口语能力的实践与研究》结题报告.docx VIP
- 糖尿病饮食的实施糖尿病饮食治疗.pptx VIP
- (高清版)-B-T 34590.1-2022 道路车辆 功能安全 第1部分:术语.pdf VIP
- 餐饮业员工流失现状及解决对策研究——以季季红餐饮管理有限公司为例.doc VIP
- 电泳电压、时间与膜厚关系的试验与探讨.pdf VIP
- 材料电化学教学(浙大)电化学测试基础知识.pdf VIP
- 银行合规内控管理体系建设项目实施建议书.docx VIP
- 天线与电波传播天线基础知识.pptx VIP
- 2025年质量员-土建方向-通用基础(质量员)证考试题库及答案.pdf VIP
文档评论(0)