洛阳师范学院UNIX实验报告62_第1页
洛阳师范学院UNIX实验报告62_第2页
洛阳师范学院UNIX实验报告62_第3页
洛阳师范学院UNIX实验报告62_第4页
洛阳师范学院UNIX实验报告62_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

1、测试过程:(实验中出现的问题、错误、解决方法)基本算法思想掌握之后,程序的大体流程可以写出来,具体的问题,就是有时候会因为对个别函数的参数应用出问题老师有问必答,全部都给解决了实验总结:签名 2012 年 5 月 22 日评语与成绩:教师签名:年 月 日洛阳师范学院信息技术学院软件实验报告专业: 软件工程 课程: UNIX高级编程 学号: 姓名: 班级: 实验名称进程控制实验类型验证型实验时间2012-5-22实验环境虚拟机下装有linux操作系统的windows操作系统实验目的与要求:掌握进程创建、执行、终止的步骤、相关函数;掌握进程间资源共享,进程间同步关系;实验内容:1、 进程创建及执行

2、1) 参考并调试教材p143程序8-1,理解fork的用法,理解父子进程间的关系,将fork替换为vfork,观察程序输出的不同,并解释原因;2) fork与vfork有什么区别?3) 将程序8-1的标准输出重定向到文件后,为什么write函数输出两次?4) 参考并调试教材p159程序8-8和程序8-9,掌握不同exec函数的用法,理解其区别;5) execlp能够正常执行吗?为什么?;6) 将程序8-9作为解释器,编写类似p165例子的脚本(只有一行)。7) 举例说明至少2种脚本的执行方法。8) 观察脚本执行的输出,说明解释器参数的排列特点。2、 验证进程终止及同步关系1) 在程序8-8中,

3、分别安排waitpid或者不安排waitpid,观察程序执行情况;2) 执行ps命令观察结果3) 在程序中调用system执行ps命令观察结果。4) 系统中有僵死进程吗?为什么?实验步骤:(算法描述、源程序、操作步骤和方法)1.进程创建及执行参考并调试教材p143程序8-1,理解fork的用法,理解父子进程间的关系,将fork替换为vfork,观察程序输出的不同,并解释原因;程序中调用fork函数:程序中调用vfork函数:但从运行结果可以看出来,调用fork函数的程序分别在父进程和子进程中输出了pid,glob,var这三个变量。而vfork函数仅仅输出了这三个变量一次。fork与vfork

4、有什么区别?Vfork函数的调用序列和返回值与frok相同,但两者的语义不同。Vfork用于创建一个新进程,而该进程的目的是exec一个新程序。Vfork与fork一样都创建一个子进程,但是它并不将父进程的地址空间完全复制到子进程中,因为子进程会立即调用exec(或exit),于是也就不会存访该地址空间。相反,在子进程调用exec或exit之前,它在父进程的空间中运行。这种优化工作方式在某些unix的也是虚拟存储器实现中提高了效率。将程序8-1的标准输出重定向到文件后,为什么write函数输出两次?由于fork函数仅仅是创建一个新进程而已,printf函数在父进程中执行了一次,在子进程中执行了

5、一次,因此输出了两次。1) 参考并调试教材p159程序8-8和程序8-9,掌握不同exec函数的用法,理解其区别;本程序使用了两个exec函数execle和execlp其中execle的第一个参数为绝对路径名相对的execlp的第一个参数为文件名这是这两个函数最大的区别。execlp能够正常执行吗?为什么?;不能,在8_8程序中,先调用execle,它要求一个路径名和一个特定的环境。下一个调用的是execlp,它用一个文件名,并将调用者的环境传送给新程序。Execlp在这里不能够工作的原因是因为目录/home/lynu/bin不是当前路径。注意,我们将第一个参数设置为路径名的文件名分量。某些s

6、hell经此参数设置为完全路径名。改程序在/home/lunu/bin下面执行,并将第二个参数“echoall”改为本机目录下的可执行程序,方可运行。将程序8-9作为解释器,编写类似p165例子的脚本(只有一行)。举例说明至少2种脚本的执行方法。脚本(script)是使用一种特定的描述性语言,依据一定的格式编写的可执行文件,又称作宏或批处理文件。一般的脚本语言的执行只同具体的解释执行器有关,所以只要系统上有相应语言的解释程序就可以做到跨平台。脚本(Script),就是含有bind和alias等命令的集合,你可以把这个集合存为一个独立的文件然后在需要的时候执行,这样就可以方便你在CS中的使用。脚

7、本可以存为后缀名为.cfg的文件放在cstrike文件夹下,执行时在控制台输入:exec(脚本文件名).cfg即可。比如将一个脚本存为 buys.cfg文件,则在控制台中输入:execbuys.cfg则可以实现我们所需要的功能。要实现一个命令只要把这一过程定义(alias)好,并且分配一个键位给这个命令,以后只要按分配好的键位,就可以实现这一过程。所有的脚本都是通过这一方法实现的。 常见的脚本语言:Scala、JavaScript,VBScript,ActionScript,MAX Script,ASP,JSP,PHP,SQL,Perl,Shell,python,Ruby,JavaFX,Lua

8、,AutoIt等。观察脚本执行的输出,说明解释器参数的排列特点。由运行结果截图可知,解释器先输出命令行的参数,之后按顺序输出环境表中的所有参数。本程序与8_8.c大体相同,仅作了少量改动。下面仅仅给出改动处的代码截图:在execle函数中修改了路径,为当前8_8.c文件的绝对路径,但是依然无法执行成功。值得注意的是,本次虽然修改了文件的绝对路径,但是并没有将第二个参数修改为本机上的可执行文件名,这是本程序无法成功执行的根本原因。验证进程终止及同步关系在程序8-8中,分别安排waitpid或者不安排waitpid,观察程序执行情况;函数waitpid的作用就是等待特定的函数终止。在本程序中,子进程虽然也执行waitpid这段程序,但理论上来说,不可能等到自己终止时给自己发信号,之后执行某段操作。此段程序应该包含在父进程执行的程序段中,即应该将waitpid这段程序外面加一个else语句。执行ps命令观察结果执行ps命令,看到当前只有两个进程在执行。在程序中调用system执行ps命令观察结果。仅仅是在程序中插入了如下截图的程序,之后编译运行变

温馨提示

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

评论

0/150

提交评论