操作系统实验三_第1页
操作系统实验三_第2页
操作系统实验三_第3页
操作系统实验三_第4页
全文预览已结束

下载本文档

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

文档简介

1、实验二Linux进程控制一实验目的掌握进程的概念,明确进程和程序的区别。认识和了解并发执行的实质。分析进程争用资源的现象,学习解决进程互斥的方法三实验内容编写一段程序,使用系统调用fork()创建两个子进程。各进程显示不同的信息,如父进程显示字符“a”,子进程分别显示字符“b”和“c”。多次运行观察显示结果,并分析产生这种执行效果的原因。修改上面编写的程序,将每个进程的输出由单个字符改为循环输出一句话,如父进程显示:“parent:”加上进程ID,子进程分别显示:“Childl:”或“Child2:”加上自己的进程ID。再观察程序执行时屏幕上出现的现象,并分析原因。3个父进程创建一个子进程,子

2、进程通过exec系统调用执行另一个文件。各自的代码中显示不同的信息,其运行结果可看出两个进程并发执行的效果。编写程序创建如图所示的进程树,在每个进程中显示当前进程ID和父进程ID。四实验指导gcc编译器GNUC编译器(GCC)gccoptionsfilenames不用任何选项编译一个程序时,GCC将会建立(假定编译成功)一个名为a.out的可执行文件.例如,gcctest.c将在当前目录下产生一个叫a.out的文件:用-o编译选项来为将产生的可执行文件指定一个文件名来代替a.out:gcc-ocountcount.c注意:当你使用-o选项时,-o后面必须跟一个文件名.Linux进程创建相关的系

3、统调用(1)fork()创建一个新的子进程。其子进程会复制父进程的数据与堆栈空间,并继承父进程的用户代码、组代码、环境变量、已打开的文件代码、工作目录和资源限制。系统调用格式:intfork()如果Fork成功则在父进程会返回新建立的子进程代码(PID),而在新建立的子进程中则返回0。如果fork失败则直接返回-1。(2)getpid()取得目前进程的识别码(进程ID),许多程序利用取到的此值来建立临时文件,以避免临时文件相同带来的问题。系统调用格式:intgetpid()例如:#includevunistd.hmain()printf(“pid=%dn”,getpid();getppid取得目前进程的父进程识别码。系统调用格式:intgetppid()例如:#includevunistd.hmain()printf(“Myparentspid=%dn”,getppid();(4)exec系统调用在以上六个函数中,第一个参数如果为,说明被执行程序是由路径名指定,如果为,则说明是由文件名指定;第二个参数如果为数组,说明被执行程序的参数是由一个数组来索引(数组必须含有一个空指针来表示结束),否则需要将参数一一列出;及的指针数组表示这两个函数显示指定一个环境表(这个数组必须以一个空指

温馨提示

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

评论

0/150

提交评论