欢迎来到天天文库
浏览记录
ID:41080798
大小:1.42 MB
页数:24页
时间:2019-08-15
《嵌入式系统实验报告1》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、LINUX操作实验报告一实验要求:1、程序设计思想要阐述清楚;2、要有流程图和源代码及注释;3、要有仿真结果及说明。【实验一】内容与目的:编写fork/vfork的测试程序,验证二者的区别1、程序设计思想fork/vfork为进程创建操作,为实现以上目的,可以在程序中设置等待,根据打印输出信息,验证父进程与子进程在执行顺序上的差别;在父进程中设置测试使用变量,分别在子进程中对变量进行修改,并打印输出,可以观察子进程对变量的修改是否会影响父进程中变量的取值,进而可以观察父进程与子进程是否数据空间及堆
2、、栈等。2、流程图、源代码及注释Fork01bFork01aPid=vfork()Pid=fork()=0>0<0=0>0<0进程错误等待等待进程错误等待等待父进程子进程父进程子进程变量自加变量自加退出返回退出Fork01a程序代码及注释如下:#include #include #include #include 24 intglobal=1;//设定参数初始值 intmain(void) {intvar=2; p
3、id_tpid;//显示两个参数初始值 printf("Theoriginalvalues:global=%d,var=%d",global,var); if((pid=fork())<0)//如果进程号小于0,显示出错 { printf("forerror"); } elseif(pid==0)//如果处于子进程,显示所处进程,并修改各变量 { sleep(10);//(设置等待时间:S) global++; var++; printf("Inchildprocess"); } el
4、se//如果处于父进程,显示所处进程和各变量 { sleep(5); printf("Inparentprocess"); } printf("pid=%d,global=%d,var=%d",getpid(),global,var); exit(0); }运行结果:若变换等待时间如下:#include #include #include #include intglobal=1;//设定参数初始值 in
5、tmain(void) {intvar=2; pid_tpid;//显示两个参数初始值 printf("Theoriginalvalues:global=%d,var=%d",global,var); if((pid=fork())<0)//如果进程号小于0,显示出错 { printf("forerror"); } elseif(pid==0)//如果处于子进程,显示所处进程,并修改各变量 { sleep(5);//(设置等待时间:S) global++; var++; printf("I
6、nchildprocess"); 24} else//如果处于父进程,显示所处进程和各变量 { sleep(10); printf("Inparentprocess"); } printf("pid=%d,global=%d,var=%d",getpid(),global,var); exit(0); }运行结果如下:Fork01b程序代码及注释如下:#include #include #include #include7、/types.h> intglobal=1;//设定参数初始值 intmain(void) { intvar=2; pid_tpid;//显示各参数值 printf("Theoriginalvalues:global=%d,var=%d",global,var); if((pid=vfork())<0)//如果进程号小于0,报错 { printf("vforkerror"); } elseif(pid==0)//如果处于子进程,设定等待时间,修改各参数值,显示进程状态和参数值,返回 { s8、leep(3); global++; var++;printf("Inchildprocess"); printf("pid=%d,global=%d,var=%d",getpid(),global,var); printf("childprocessended"); _exit(0); 24}//如果处于父进程,设定等待时间,修改各参数值,显示进程状态和参数值,返回 else { sleep(1); printf("Inparentprocess"); globa
7、/types.h> intglobal=1;//设定参数初始值 intmain(void) { intvar=2; pid_tpid;//显示各参数值 printf("Theoriginalvalues:global=%d,var=%d",global,var); if((pid=vfork())<0)//如果进程号小于0,报错 { printf("vforkerror"); } elseif(pid==0)//如果处于子进程,设定等待时间,修改各参数值,显示进程状态和参数值,返回 { s
8、leep(3); global++; var++;printf("Inchildprocess"); printf("pid=%d,global=%d,var=%d",getpid(),global,var); printf("childprocessended"); _exit(0); 24}//如果处于父进程,设定等待时间,修改各参数值,显示进程状态和参数值,返回 else { sleep(1); printf("Inparentprocess"); globa
此文档下载收益归作者所有