- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验六 软中断信号及处理 实验目的 加深对进程概念的理解,明确进程和程序的区别、进一步认识并发执行的实质 了解并熟悉Linux系统中利用软中断信号实现进程通信的基本概念及方法 熟悉Linux提供的有关系统调用函数/库函数,并能使用这些函数 实验准备及预习 阅读讲义《附件7-软中断信号及处理》,了解Linux系统中利用软中断信号实现进程通信的基本概念及方法 熟悉Linux提供的有关系统调用函数/库函数:alarm()、kill()、signal()、sleep()、pause() Linux的低级通信 Linux的低级通信主要用来传递进程间的控制信号,主要是文件锁和软中断信号机制 软中断信号的目的是通知对方发生了异步事件 信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达 信号是在软件层次上对中断机制的一种模拟 与硬中断处理程序不一致的是 收到硬中断信号后中断处理程序立即被启动,软中断处理程序必须等到接收进程运行时才启动 进程可向自己发送软中断信号,以便在某些意外情况下,进程能转入规定好的处理程序。例如,大部分陷阱都是由当前进程自己向自己发送一个软中断信号而立即转入相应处理的 信号事件的发生有两个来源 硬件来源,比如我们按下了键盘或者其它硬件故障 软件来源,最常用发送信号的系统函数是kill, raise, alarm和setitimer以及sigqueue函数,软件来源还包括一些非法运算等操作 Linux中有30个软中断信号和31个实时软中断信号 常见软中断信号 SIGHUP 从终端上发出的结束信号 SIGINT 来自键盘的中断信号 SIGQUIT 来自键盘的退出信号 SIGFPE 浮点异常信号 SIGALRM 时钟定时信号 信号处理的一般方法 忽略该信号 执行系统默认动作 捕捉信号 为了给用户进程也提供相应的同步、互斥以及软中断通信功能,Linux系统提供了几种相应的系统调用或库函数 文件锁函数lockf(fd, function, size)可用于互斥 用于同步的系统调用是wait()或sleep(n),其中wait()用于父子进程之间的同步,而sleep则使得当前进程睡眠n秒后自动唤醒自己 系统调用kill( pid, sig )和signal( sig, func )被用来传递和接收中断信号 例:signal( SIGINT, SIG_IGN ),表示当前进程忽略键盘中断信号的影响 发送信号 常用于发送信号的系统函数是kill、raise和alarm kill()函数 功能:传送信号给指定的进程 语法格式: #includesys/types.h #includesignal.h int kill(pid_t pid,int sig); 函数说明:kill()可以用来送参数 sig 指定的信号给参数 pid 指定的进程,参数 pid一般0(将信号传给进程识别码为 pid 的进程) 返回值:执行成功则返回0;如果有错误则返回-1 #includesys/types.h? #includesys/stat.h? #includesignal.h? #includeunistd.h? #includestdio.h? #includestdlib.h?? int?main()? {?pid_t?pid;? ????pid=fork();? ????if(pid0)??{? ????????????perror(fork()?error\n);? }? ????if(pid==0) {?/*子进程*/??? ????? printf(child?process?wait?for?signal!\n);? ????? pause(); /*挂起进程直至捕捉到一个信号*/ } else {?/*父进程*/? ???? sleep(3);? ???? kill(pid,SIGKILL); /*向子进程发送SIGKILL信号*/? ???? printf(parent?send?signal to kill child!\n);? ???? waitpid(pid,NULL,0); /*等待pid退出*/? ??? printf(child?process?exit!\n);? ??? exit(0);? ?? }? }? alarm() 语法格式: #include unistd.h unsigned int alarm(unsigned int seconds) ; 返回:0或以前设置的闹钟时间的余留秒数 参数:seconds的值是秒数,经过了指定的seconds秒后会产生信号SIGALRM 说明: 设置一个时间
您可能关注的文档
- 疼痛的规范化评估及治疗题稿.ppt
- 北京农大考试复习题题稿.ppt
- 采掘机械第2篇1章-单体支护、液压支架、泵站题稿.ppt
- 2015光的直射和反射折射教案.ppt
- 空气的污染和保护1浙教版题稿.ppt
- 滕王阁序2题稿.ppt
- 北冥有鱼精品题稿.ppt
- EPB项目实施启动大会题稿.pptx
- EPB型电袋复合除尘器操作培训题稿.doc
- 北师大版八上《浪淘沙题稿.ppt
- 2024高考物理一轮复习规范演练7共点力的平衡含解析新人教版.doc
- 高中语文第5课苏轼词两首学案3新人教版必修4.doc
- 2024_2025学年高中英语课时分层作业9Unit3LifeinthefutureSectionⅢⅣ含解析新人教版必修5.doc
- 2024_2025学年新教材高中英语模块素养检测含解析译林版必修第一册.doc
- 2024_2025学年新教材高中英语单元综合检测5含解析外研版选择性必修第一册.doc
- 2024高考政治一轮复习第1单元生活与消费第三课多彩的消费练习含解析新人教版必修1.doc
- 2024_2025学年新教材高中英语WELCOMEUNITSectionⅡReadingandThi.doc
- 2024_2025学年高中历史专题九当今世界政治格局的多极化趋势测评含解析人民版必修1.docx
- 2024高考生物一轮复习第9单元生物与环境第29讲生态系统的结构和功能教案.docx
- 2024_2025学年新教材高中英语UNIT5LANGUAGESAROUNDTHEWORLDSect.doc
文档评论(0)