武汉工程大学实验报告专业班级:姓名:学号:课程名称:操作系统实验成绩: 指导教师: :实验名称:进程控制与进程间通信一、 实验目的:1、 掌握进程的概念,明确进程和程序的区别。2、 认识和了解并发执行的实质。3、 了解什么是信号。4、 熟悉LINUX系统中进程之间软中断通信的基本原理。二、 实验内容:1、进程的创建编写一段程序,使用系统调用 fork()创建两个子进程,在系统中有一个父进程和两个子进程活动。让每个进程在屏幕上显示一个字符; 父进程显示字符“a”,子进程分别显示字符“b”和“c”。试观察记录屏幕上的显示结果,并分析原因。<参考程序>#include<>main(){intp1,p2;while((p1=fork())==-1);if(p1==0)putchar(‘b');else{while((p2=fork())==-1);if(p2==0)putchar(‘c');elseputchar( ‘a');}}2、修改已编写的程序,将每个进程的输出由单个字符改为一句话,再观察程序执行时屏幕上出现的现象,并分析其原因。<参考程序>#include<>main(){intp1,p2,i;while((p1=fork())==-1);if(p1==0)for(i=0;i<500;i++)printf(“child%dn”,i);else{while((p2=fork())==-1);If(p2==0)for(i=0;i<500;i++)printf(“son%dn”,i);elsefor(i=0;i<500;i++)printf(“daughter%dn”,i);}}3、编写一段程序,使用系统调用fork()创建两个子进程,再用系统调用signal()让父进程捕捉键盘上来的中断信号(即按ctrl+c键),当捕捉到中断信号后,父进程用系统调用kill()向两个子进程发出信号,子进程捕捉到信号后,分别输出下列信息后终止:Childprocess1iskilledbyparent!Childprocess2iskilledbyparent!父进程等待两个子进程终止后,输出以下信息后终止:Parentprocessiskilled!<参考程序>#include<>#include<>#include<>#include<sys/>#include<sys/>intwait_mark;voidwaiting(),stop();voidmain(){intp1,p2;signal(SIGINT,stop);while((p1=fork())==-1);if(p1>0)/*在父进程中*/{①while((p2=fork())==-1);If(p2>0)/*在父进程中*/{②wait_mark=1;waiting(0);kill(p1,10);kill(p2,12);wait();wait();printf("parentprocessiskilled!\n");exit(0);}else/*在子进程2中*/wait_mark=1;signal(12,stop);waiting();lockf(1,1,0);printf("childprocess2iskill
操作系统进程实验报告 来自淘豆网m.daumloan.com转载请标明出处.