视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
进程间通信实验报告
2024-06-26 15:18:32 责编:小OO
文档


进程间通信实验报告

GDOU-B-11-112

广东海洋大学学生实验报告书(学生用表)

实验名称进程间通信

学院(系)

学生姓名

课程名称专业操作系统课程号班级实验日期软件学院学号软件工程实验地点

一、实验目的

1、利用文件锁机制,实现多进程共享一个文件,具体过程和要求参照课堂讲解。

2、利用双向管道机制实现进程间通信,父子两个进程,第一个进程从键盘输入多个整数(以-1表示整数序列的结束,-1不属于其中),每输入一个整数,便立即通过管道传送给第二个进程;第二个进程对收到的数据进行排序(排序算法同学们自选,冒泡、选择、堆…均可),排序结果通过管道传递给第一个进程;第一个进程显示排序结果。

选做题:利用LINU_进程间共享内存机制实现第2题,亦即将管道用共享内存机制来代替。

二、实验内容

1、(1)新建文件,编辑程序如下:

define_POSI__SOURCE

include

include

include

include

include

include

include

include

intmain(intargc,charargv[])

intnum,fd,i;

FILEf;

charbuff[100];

fd=open("XXX",O_RDWR);

flock(fd,LOCK_E_);

if(fd<=0){

printf("openerror ");

return1;

f=(FILE)fdopen(fd,"r+");

if(f==NULL){

printf("fdopenerror ");

return1;

for(i=1;i<=100000;i++){

lseek(fd,0,SEEK_SET);

fscanf(f,"%d",num);

sprintf(buff,"%d ",num+1);lseek(fd,0,SEEK_SET);write(fd,buff,strlen(buff));}

flock(fd,LOCK_UN);

fclose(f);

return0;

(2)执行结果如下:

2、(1)新建文件,编写程序如下:include

include

includeinclude

intmain()

intfd1[2];

intfd2[2];

pid_tpid;

pipe(fd1);

pipe(fd2);

pid=fork();

if(pid==0)

close(fd1[1]);

close(fd2[0]);intnum;

intsum=0;

charstr[10];

while(read(fd1[0],str,100)>0)

sscanf(str,"%d",num);

printf("receiveanumber:%d ",num);fflush(stdout);

sum+=num;

close(fd1[0]);

sprintf(str,"%d",sum);

write(fd2[1],str,strlen(str));

close(fd2[1]);

_e_it(0);

else

intn;

charstr[10];

close(fd1[0]);

close(fd2[1]);

while(1)

scanf("%d",n);

if(n==-1)break;

sprintf(str,"%d ",n);

write(fd1[1],str,strlen(str));}

close(fd1[1]);

read(fd2[0],str,100);

close(fd2[0]);

printf(" sumis%s ",str);

fflush(stdout);

_e_it(0);

return0;

(2)执行结果如下:

三、实验总结

通过这次实验,使我了解了文件锁机制是如何控制多进程共享同一文件的,以及系统是如何利用双向管道机制实现进程间通信。

成绩指导教师日期

注:请用A4纸书写,不够另附纸。

下载本文
显示全文
专题