版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、操作系统实验报告课程名称操作系统班 级物联网一班姓名学号实验名称进程间的通信实验序号31.实验目的及要求 了解什么是信号。 熟悉LINUX系统中进程之间软中断通信的基本原理。2. 实验环境VMware Workstation 12 Player3. 实验内容 编写一段程序,使用系统调用fork()创建两个子进程,再用系统调用signal()让父进程捕捉键盘上来的中断信号(即按 ctrl+c 键),当捕捉到中断信号后,父进程用系统调用kill()向两个子进程发出信号,子进程捕捉到信号后,分别输出下列信息后终止:Child process 1 is killed by parent!Child p
2、rocess 2 is killed by parent!父进程等待两个子进程终止后,输出以下信息后终止:Parent process is killed! 程序实例#include#include #include int wait_mark;void waiting();void stop();void main()int p1,p2;signal(SIGINT,stop);/signal ()初始位置while(p1=fork()=-1);if(p10) signal(SIGINT,stop);while(p2=fork()=-1);if(p20)signal(SIGINT,stop);
3、wait_mark=1;waiting();kill(p1,10);kill(p2,12);wait();wait();printf(parent process is killed!n); exit(0);else wait_mark=1;signal(12,stop);waiting();lockf(1,1,0);printf(child process 1 is killed by parent!n); lockf(1,0,0);exit(0);elsewait_mark=1; signal(10,stop);waiting();lockf(1,1,0);printf(child pro
4、cess 2 is killed by parent!n); lockf(1,0,0);exit(0);void waiting。while(wait_mark!=O);void stop()wait_mark=0; 程序结果以及分析mo1.c:47:5: note; include cstdltb.hf or provide decla st4HdwWyubuntuout:child process 1 ts killed by parent!ttld process 2 is killed by parentl trent process is killed!分析:程序执行时,首先会先在父
5、程序中创建一个子程序,然后 父程序向子程序发送一个信号(kill方法),子进程在接收到父程 序发送的信号后,会在控制台打印一句话,这时因为有两个子进程接收到信号,他们都要对控制台操作,这时会发生互斥操作。lockf(1,1,0);printf(child process 2 is killed by parent!n);lockf(1,0,0);lockf(1,1,0)和 lockf(1,0,0)是分别加锁和解锁操作,再打印后子程 序会退出。在程序中加入wait() 是等待两个程序都结束了父程序在控制台打印输出。exit(O)的作用是退出子程序。 修改上面的程序,增加语句signal(SIGI
6、NT,SIGGN)和语句signal(SIGQUIT,SIG_IGN) ,再观察程序执行时屏幕上出现的现 象,并分析其原因。 示例程序#include#include#includevoid IntDelete();void Int1();void Int2();int pid1,pid2;int EndFlag=0;void main()int exitcode;signal(SIGINT,SIG_IGN);signal(SIGQUIT,SIG_IGN);while(pid1=fork()=-1);if(pid1=0)signal(SIGUSR1,Int1); signal(SIGINT,S
7、IG_IGN); pause();elsewhile(pid2=fork()=-1);if(pid2=0) signal(SIGUSR2,Int2); signal(SIGINT,SIG_IGN); pause();elsesignal(SIGINT,IntDelete); waitpid(-1,&exitcode,0);printf(parent process is killed n);void IntDelete()kill(pid1,10);kill(pid2,12);EndFlag=1;void Int1()printf(child process 1 is killed by pa
8、rent !n);exit(0);void Int2()printf(child process 2 is killed by parent !n);exit(0);程序分析1. 首先在主进程中创建一个子进程 1,并将自定义中断信号SIGUSR1 注册到函数 Int1() 上去,子进程 1 挂起并监听中断信 号,当接收到中断信号子进程 1会打印一句话并退出;2. 父进程还会创建一个子进程2,并将自定义中断信号SIGUSR2注册到函数Int2()上去,子进程2挂起并监听中断信 号,当接收到中断信号子进程2会打印一句话并退出;3. 父进程将中断信号SIGINT上注册到了 IntDelete函数上, 当父进程接收到中断后,会向两个子进程发送软中断信号, 子进 程接收到软中断信号后会执行响应的响应; 以下是截图:d,out: command not found ubantu649ubuntu:/lt$ ACACchi.d process 1 xs Rifled by parent I child process 2 is killed by parent J parent process is killed4. 实验问题从执行结果上来看,按照程序执行的顺序是父进程先接收到中断信号那么为什么父进程反
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年三明市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)附答案详解(模拟题)
- 临沂市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)附答案详解(轻巧夺冠)
- 2026年铜仁地区农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)附答案详解(培优)
- 宜春市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)含答案详解(新)
- 池州市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)含答案详解(完整版)
- 2025年广东省辅警公共基础知识题库(附答案)
- 拉萨市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)及答案详解(必刷)
- 海南州农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)含答案详解(综合题)
- 防城港市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)含答案详解(预热题)
- 2026年杭州市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)含答案详解(考试直接用)
- 2025-2026学年粤教花城版(2024)小学音乐一年级上册教学计划及进度表
- 医院装修工程危险源辨识与安全措施
- 荆门格林美新材料有限公司废旧锂电池及极片废料综合处理项目环评报告书
- 河南省委党校在职研究生入学考试真题及答案
- 服装搭配手册指南
- 2025至2030中国手术防粘连液经营风险与未来规模预测报告
- 水电站消防知识培训课件
- 2025年国企运维岗笔试题目及答案
- 医院产科科室简介
- 《世界经典神话与传说故事》测试题及答案
- 医院科室人文建设实施路径
评论
0/150
提交评论