实验一-进程控制实验.doc

实验一-进程控制实验.doc

ID:59189762

大小:83.50 KB

页数:5页

时间:2020-10-30

实验一-进程控制实验.doc_第1页
实验一-进程控制实验.doc_第2页
实验一-进程控制实验.doc_第3页
实验一-进程控制实验.doc_第4页
实验一-进程控制实验.doc_第5页
资源描述:

《实验一-进程控制实验.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、实验一进程控制一、实验目的:加深对进程概念的理解,明确进程和程序的区别;掌握Linux操作系统的进程创建和终止操作,体会父进程和子进程的关系及进程状态的变化;进一步认识并发执行的实质,编写并发程序。二、实验平台:虚拟机:VMWare9以上操作系统:Ubuntu12.04以上编辑器:Gedit

2、Vim编译器:Gcc三、实验内容:(1)编写一段程序,使用系统调用fork()创建两个子进程,当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示“身份信息”:父进程显示“Parentprocess!PID=xxx

3、1PPID=xxx2”;子进程显示“Childxprocess!PID=xxxPPID=xxx”。多运行几次,观察记录屏幕上的显示结果,并分析原因。说明:xxx1为进程号,用getpid()函数可获取进程号;xxx2为父进程号,用getppid()函数可获取父进程号;Childx中x为1和2,用来区别两个子进程;wait()函数用来避免父进程在子进程终止之前终止。程序源码:#include#include#include#defineNUM2intmain(void){p

4、id_tpid1,pid2;if((pid1=fork())<0){printf("创建进程1失败");}else{if(pid1==0){//子进程1执行printf("Child1process:");printf("PID=%dPPID=%d",getpid(),getppid());sleep(2);}else{if((pid2=fork())<0){printf("创建进程2失败");}else{if(pid2==0){//子进程2执行printf("Child2process:");printf("PID=%dP

5、PID=%d",getpid(),getppid());}else{//父进程执行wait();wait();printf("Parentprocess:");printf("PID=%dPPID=%d",getpid(),getppid());exit(0);}}}}}执行结果whtcmiss@whtcmiss-VirtualBox:~/Desktop$gcctest1.c-otestwhtcmiss@whtcmiss-VirtualBox:~/Desktop$./testChild2process:PID=2527P

6、PID=2525Child1process:PID=2526PPID=2525Parentprocess:PID=2525PPID=2127whtcmiss@whtcmiss-VirtualBox:~/Desktop$./testChild2process:PID=2530PPID=2528Child1process:PID=2529PPID=2528Parentprocess:PID=2528PPID=2127whtcmiss@whtcmiss-VirtualBox:~/Desktop$./testChild2process:

7、PID=2533PPID=2531Child1process:PID=2532PPID=2531Parentprocess:PID=2531PPID=2127实验结果分析:第一次程序运行结果,两个子进程的PPID都是2525,是由同一个进程创建。而父进程PID是2525,父进程PPID是2127,说明父进程也是一系统进程的子进程。第二次程序运行结果,父进程PID是2528,PPID是2127,说明父进程是由同一进程创建的,父进程也是以子进程的方式存在,且进程ID是逐渐递增的。(2)fork()和exec()系列函数能同时运行多个

8、程序,利用上述函数将下面单进程顺序执行的程序single.c改造成可并发执行3个进程的程序multi_process.c;并用time命令获取程序的执行时间,比较单进程和多进程运行时间,并分析原因。//single.c#include#defineNUM5intmain(void){voidprint_msg(char*m);print_msg("Good");print_msg("Morning");print_msg("007");//将007替换为本人学号return0;}voidprint_msg(

9、char*m){inti;for(i=0;i

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。