惠普测试171+实验3进程的创建与控制实验_第1页
惠普测试171+实验3进程的创建与控制实验_第2页
惠普测试171+实验3进程的创建与控制实验_第3页
惠普测试171+实验3进程的创建与控制实验_第4页
惠普测试171+实验3进程的创建与控制实验_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、操作系统原理A实验报告学生姓名: 陶浩 学 号:班级:惠普测试171 实验名称:实验3 进程的创建与控制(2)实验指导教师: 葛艳 (二)进程的控制一、实验目的 1. 掌握在子进程中使用execl()执行系统命令或调用已编译的其他可执行程序。 2. 掌握父进程通过创建子进程完成某项任务的方法。 3. 掌握系统调用exit()和_exit()的使用。二、实验内容 1.运行程序exit1.c(p32页),把运行结果截图。再把_exit(0)换为exit(0),运行程序,把运行结果截图。 (1)分析修改前后运行结果出现的差异。(2)分析exit(0)和_exit(0)的区别。 2.先编译运行下面的h

2、ello.c程序,然后在编译运行程序exec.c,把运行结果截图。分析为什么子进程的最后两条语句(用红颜色标注)没有输出。 hello.c #include main() printf(“In hello.c, ID=%dn”,getpid(); printf(“hellon); exec.c #include #include #include main() int p; p=fork(); if (p0) printf(In the parentn); wait(0); else printf(“In child, ID=%dn”,getpid(); printf(before execu

3、te execln); execl(./hello,hello,NULL); perror(execl failed to run hello); printf(after execute execln); 三、实验步骤及运行结果分析1.运行程序exit1.c(p32页),把运行结果截图。 再把_exit(0)换为exit(0),运行程序,把运行结果截图。 (1)分析修改前后运行结果出现的差异。当为_exit(0)的时候,运行结果为:this is parent1this is parent2this is parent1this is child first当为exit(0)的时候,运行结果

4、为:this is parent1this is parent2this is parent1this is child firstthis is child second第二个运行结果比较第一个运行结果,多了一行:this is child second(2)分析exit(0)和_exit(0)的区别。_exit()和exit()主要区别是一个直接结束进程进入内核中,一个退出进程会清理I/O缓冲区。分析this is parent1出现了两次,问题是因为printf是有数据缓冲区的,采用的是I/O的方式,不加n数据不刷新,fork()创建子进程,复制了父进程的数据段和堆栈段,包括缓冲区。遇到

5、n换行符自动从缓冲区将记录读出。exit()将缓冲区中的数据写完才能退出来,所以会输出this is child second。而调用_exit()函数后程序直接退出到内核中。2.先编译运行下面的hello.c程序,然后在编译运行程序exec.c,把运行结果截图。分析为什么子进程的最后两条语句(用红颜色标注)没有输出。编译运行程序exec.c分析:execl()函数用来执行参数字符串所代表的文件路径。perror()函数是将一个函数发生的错误原因输出到标准设备stderr(无缓冲,会直接输出)。通常execl函数会放在fork()函数的子进程中,来代替子进程执行,执行成功后子进程就会消失,但是执行失败的话,必须用exit()函数让子进程退出。execl(“./hello”,”hello”,NULL);子进程执行这句代码没有错误,下面的语句不会再执行。execl函数会取代执行它的进程

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论