




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1,计算机操作系统,第四次上机,2,有关的系统调用,子进程创建(教材P156) 格式:int fork(); 表头文件:#include 功能:当系统调用的返回值可以是0或大于0的整数或等于-1。 返回值等于0时表示系统将执行子进程的有关程序段 返回值大于0表示系统将执行父进程的程序段 返回值等于-1则表示子进程未创建成功,3,作业1,运行下面代码,观察运行结果,体会程序中系统调用函数fork()的作用和功能!,4,#include #include #include int main(void) pid_t pid; printf(Process Creation Studyn); pid
2、= fork(); switch(pid) case 0:printf(Child process is running,CurPid is %d, ParentPid is %dn, pid, getppid(); break; case -1: perror(Process creation failedn); break; default: printf(Parent process is running,ChildPid is %d, ParentPid is %dn, pid, getpid(); break; exit(0); ,5,作业2,运行下面代码,观察运行结果,体会程序中系
3、统调用函数fork()的作用和功能!,6,#include #include #include int main(void) pid_t pid; char * msg; int k; printf(Process Creation Studyn); pid = fork(); switch(pid) case 0: msg = Child process is running; k = 3; break; case -1:perror(Process creation failedn); break; default:msg = Parent process is running; k=5;
4、 break; while(k 0) puts(msg); sleep(1); k-; exit(0);,7,有关的系统调用,子进程创建(教材P156) 格式:int vfork(); 表头文件:#include 功能: Vfork也可以用来创建一个新进程,和fork一样都是调用一次,返回两次。,8,有关的系统调用,与fork()的区别: 使用fork创建一个子进程时,子进程只是完全复制父进程的资源。这样得到的子进程独立于父进程,具有良好的并发性。而使用vfork创建一个子进程时,操作系统并不将父进程的地址空间完全复制到子进程,用vfork创建的子进程共享父进程的地址空间,也就是说子进程完全运
5、行在父进程的地址空间上。子进程对该地址空间中任何数据的修改同样为父进程所见。 使用fork创建一个子进程时,哪个进程先运行取决于系统的调用算法。而vfork创建一个进程时,vfork保证子进程先运行,当它调用exec或exit之后,父进程才能被高度运行。,9,作业3,运行下面代码,观察运行结果,体会程序中系统调用函数fork()与vfork()的区别和联系!,#include #include #include int globVar = 5; int main(void) pid_t pid; int var = 1, i; printf(fork is diffirent with vfr
6、ok n); pid = fork();/*pid = vfork();*/ switch(pid) case 0: i = 3; while(i- 0) printf(Child process is runningn); globVar+; var+; sleep(1); printf(Childs globVar = %d,var = %dn,globVar,var); exit(0); case -1: perror(Process creation failedn); exit(0); default: i = 5; while(i- 0) printf(Parent process
7、 is runningn); globVar+; var+;sleep(1); printf(Parents globVar = %d ,var = %dn, globVar ,var); exit(0);,11,作业4,(上交)编写一个程序,使用系统调用fork()(或vfork()创建两个子进程。让每一个进程循环10次,在屏幕上输出一些信息,其中父进程显示字符a,子进程分别显示字符b和c。,12,VMware tools的安装,首先以root身份进入Linux,按CTRL+ALT组合键,进入主操作系统,点击VM菜单下的VMware Tools Install子菜单。在弹出的对话框中单击“i
8、nstall”,出现包含一个Vmware-linux-toostargz文件的cdrom对话框。把这个文件解压缩后,执行其中的Vmware-install.p1文件。具体步骤如下: (1)在Vmware-Linux-tools.tar.gz文件上单击右键,选择“复制文件”。 (2)连续单击两次图中的“向上一级”按钮,使当前目录退回到根目录后,双击tmp进入tmp目录。单击右键选择“粘贴文件”将压缩文件复制至tmp目录下。,13,VMware tools的安装,(3)在tmp目录下的Vmwarelinux toolstargz文件上单击右键,选择“解压缩到这里”。 (4)进入解压后的目录运行安装命令Vmware-install.pl。,14,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论