



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Linux操作系统设计实践实验一:进程管理实验目的:(1) 加深对进程概念的理解,明确进程和程序的区别。 (2) 进一步认识并发执行的实质。 (3) 学习通过进程执行新的目标程序的方法。 (4) 了解Linux系统中进程信号处理的基本原理实验环境:红帽操作系统实验内容: 1.进程的创建fork()。 2. 使用exec函数族使子进程执行新的目标程序。 3.编写一段程序,使其实现进程的软中断通信实验代码的验证: 1.编写一段程序,使用系统调用fork()创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”:子进程分别显示“b”和“c”。试观察记录屏幕上显示结果,并分析原因。#includeint main()int p1 ,p2 ;while(p1=fork()=-1); if(p1=0) putchar(b);printf(“n”);elsewhile(p2=fork()=-1); if(p2=0) putchar(c);printf(“n”);else putchar(a);printf(“n”); return 0;实验结果:如上所示:a,b,c 出现的顺序是是不固定的。分析:fork()会产生一个新的子进程。如果fork成功则在父进程会返回新建立的子进程标识好(PID),而子进程会返回0;如果fork()失败则是返回-1.fork()是一个返回两个参数数的函数,如果fork()返回值大于0时,代表创建fork()函数的下一句是由父进程执行的。如果返回值为0时,代表创建fork()函数的下一句是由子进程执行的。因此,上诉程序会形成三个进程:父进程打印字符 a,子进程1打印字符 b,子进程2打印字符 c。由并发程序运行,可知这三个进程运行的顺序是不固定的。 2使用exec函数族使子进程执行新的目标程序。#include #include int main() char * argv =ls, -a, /home/s030802214/test, (char*) 0;execv(/bin/ls,argv);return 0;实验结果:分析:execv()函数的原型: int execv(const cher* path, char *const argv); 其中一个参数指定执行文件所代表的路径,第二个参数利用数组指针来传递给执行文件。所以上诉程序的效果与输入shell 命令:ls -a 的结果是一样的。3.使用系统调用fork()创建两个子程序,再用系统调用signal()接收父进程从键盘上来的中断信号(即按Ctrl+c键);当有中断信号后,父进程用系统调用Kill()向两个子进程发出信号,子进程有信号后分别输出Child Processll is Killed by Parent!Child Processl2 is Killed by Parent!父进程等待两个子进程终止后,输出如下的信息后终止:Parent process is Killed!= #include #include int wait_mark; void waiting() while(wait_mark=1); void stop() wait_mark=0; int main() int p1,p2; while(p1=fork()=-1); if(p1=0) wait_mark=1; signal(SIGINT,SIG_IGN); signal(16,stop); waiting(); printf(Child Process11 is Killed by Parent!n); exit(0); else while(p2=fork()=-1); if(p2=0) wait_mark=1; signal(SIGINT,SIG_IGN); signal(17,stop); waiting(); printf(Child Process12 is Killed by Parent!n); exit(0); else wait_mark=1; signal(SIGINT,stop); waiting(); kill(p1,16); kill(p2,17); wait(0); wait(0); printf(Parent Process is Killed!n); exit(0); 实验结果:分析:上述程序中子进程1.和子进程2都有signal(SIGINT,SIG_IGN),的系统调用,故当键盘按下Ctrl+c键时这两进程不会响应。这两个子进程一开始都有waiting()故这两个进程就相当与阻塞了,当CPU运行到父进程时收到来着键盘的信号于是执行stop()函数,则接着父进程执行kill()系统调用,故分别向子进程1,子进程2发送信号16,17.这时子进程收到来自父进程的信号,则去执行signal(16/17,stop)系统调用,stop()相
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山东德州一中2026届化学高一上期中检测试题含解析
- 二班级班主任新学期教学工作方案
- 方案研讨会会议纪要
- XX年七夕主题活动策划方案
- 四川绵阳中学2026届化学高二第一学期期中检测模拟试题含解析
- 福建省长汀、连城一中等六校2026届化学高二第一学期期中质量检测试题含解析
- 重庆2026届化学高二上期末达标检测模拟试题含答案
- 广东省东莞市三校2026届高二化学第一学期期末调研试题含答案
- 尾矿库作业人员考试试题及答案
- 司机三力考试试题及答案
- 《创新创业基础》课程教学大纲
- 项目改善工具-PDPC法的应用课件
- 2023年安徽省五蒙高速公路开发有限公司招聘笔试题库及答案解析
- (完整版)淡水生物资源调查技术规范
- 养老机构放弃抢救及心肺复苏同意书、安宁服务协议
- 皮肤、伤口、造口护理(临床护理实践指南)
- 防范化解露天矿山安全生产风险
- 2022年中原出版传媒投资控股集团有限公司招聘笔试题库及答案解析
- TSG 81-2022 场(厂)内专用机动车辆安全技术规程
- 水利水电工程建筑物技术讲座课件
- 代课教师聘用合同(5篇)
评论
0/150
提交评论