欢迎来到天天文库
浏览记录
ID:15777672
大小:235.85 KB
页数:18页
时间:2018-08-05
《02_linux信号专题讲座-v1.0.1-王保明》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、轻松入门实战应用从项目开发角度为你搭建完整的知识体系wangbaominglinux信号-应用编程-专题讲座writtenby王保明linux信号基本概念1基本概念中断q中断是系统对于异步事件的响应q中断信号q中断源q现场信息q中断处理程序q中断向量表异步事件的响应:进程执行代码的过程中可以随时被打断,然后去执行异常处理程序生活中的中断和计算机系统中的中断1)无中断生活场景张三看书,厨房烧水2)有中断的生活场景张三看书,设置闹钟,厨房烧水。闹钟发出中断信号,张三把书合好(第20页),去厨房把开水事情处理好,张三重新打开20页进行阅读。3)计算机系
2、统的中断场景中断源发出中断信号,CPU判断中断是否屏蔽屏蔽、保护现场,cpu执行中断处理程序,cpu恢复现场,继续原来的任务。4)中断的其他概念中断向量表保存了中断处理程序的入口地址。中断个数固定,操作系统启动时初始化中断向量表。中断有优先级(有人敲门,有人打电话,有优先级)中断可以屏蔽(张三可以屏蔽电话)。中断分类q硬件中断(外部中断)外部中断是指由外部设备通过硬件请求的方式产生的中断,也称为硬件中断q软件中断(内部中断)内部中断是由CPU运行程序错误或执行内部程序调用引起的一种中断,也称为软件中断。qx86平台INT指令ARM软中断指令SWI
3、信号概念q信号是UNIX系统响应某些状况而产生的事件,进程在接收到信号时会采取相应的行轻松入门实战应用从项目开发角度为你搭建完整的知识体系wangbaoming动。q信号是因为某些错误条件而产生的,比如内存段冲突、浮点处理器错误或者非法指令等q信号是在软件层次上对中断的一种模拟,所以通常把它称为是软中断信号和中断的区别q信号与中断的相似点:q(1)采用了相同的异步通信方式;q(2)当检测出有信号或中断请求时,都暂停正在执行的程序而转去执行相应的处理程序;q(3)都在处理完毕后返回到原来的断点;q(4)对信号或中断都可进行屏蔽。q信号与中断的区别:
4、q(1)中断有优先级,而信号没有优先级,所有的信号都是平等的;q(2)信号处理程序是在用户态下运行的,而中断处理程序是在核心态下运行;q(3)中断响应是及时的,而信号响应通常都有较大的时间延迟。2信号名称及常用信号信号名称描述SIGABRT进程停止运行6SIGALRM警告钟SIGFPE算述运算例外SIGHUP系统挂断SIGILL非法指令SIGINT终端中断2SIGKILL停止进程(此信号不能被忽略或捕获)SIGPIPE向没有读者的管道写入数据SIGSEGV无效内存段访问SIGQUIT终端退出3SIGTERM终止SIGUSR1用户定义信号1SIGU
5、SR2用户定义信号2SIGCHLD子进程已经停止或退出SIGCONT如果被停止则继续执行SIGSTOP停止执行SIGTSTP终端停止信号SIGTOUT后台进程请求进行写操作SIGTTIN后台进程请求进行读操作轻松入门实战应用从项目开发角度为你搭建完整的知识体系wangbaoming实验1:kill–l可以查看linux内核支持的信号Man7signal查看信号的默认动作、信号的含义3信号处理进程对信号的三种相应q忽略信号不采取任何操作、有两个信号不能被忽略:SIGKILL(9号信号)和SIGSTOP。思考1:为什么进程不能忽略SIGKILL、SI
6、GSTOP信号。(如果应用程序可以忽略这2个信号,系统管理无法杀死、暂停进程,无法对系统进行管理。)。SIGKILL(9号信号)和SIGSTOP信号是不能被捕获的。q捕获并处理信号内核中断正在执行的代码,转去执行先前注册过的处理程序。q执行默认操作默认操作通常是终止进程,这取决于被发送的信号。信号的默认操作:通过man7signal进程查看man7signal编程实践:让应用程序捕捉ctrl+c信号以ctrl+c会产生一个中断。当前应用程序捕捉ctrl+c中断信号。4信号signal函数编程实践signal信号安装函数signal函数,作用1:站
7、在应用程序的角度,注册一个信号处理函数。作用2:忽略信号、设置信号默认处理信号的安装和恢复qtypedefvoid(*__sighandler_t)(int);轻松入门实战应用从项目开发角度为你搭建完整的知识体系wangbaomingq#defineSIG_ERR((__sighandler_t)-1)q#defineSIG_DFL((__sighandler_t)0)q#defineSIG_IGN((__sighandler_t)1)q函数原型:__sighandler_tsignal(intsignum,__sighandler_thandl
8、er);q参数qsignal是一个带signum和handler两个参数的函数,准备捕捉或屏蔽的信号由参数signum给出,接收到指定信
此文档下载收益归作者所有