进程间通信实验报告_第1页
进程间通信实验报告_第2页
进程间通信实验报告_第3页
进程间通信实验报告_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

GDOU-B-11-112广东海洋大学学生实验报告书(学生用表)GDOU-B-11-112实验名称进程间通信课程名称操作系统课程号学院(系)软件学院专业软件工程班级学生姓名学号实验地点实验日期一、实验目的1、利用文件锁机制,实现多进程共享一个文件,具体过程和要求参照课堂讲解。2、利用双向管道机制实现进程间通信,父子两个进程,第一个进程从键盘输入多个整数(以-1表示整数序列的结束,-1不属于其中),每输入一个整数,便立即通过管道传送给第二个进程;第二个进程对收到的数据进行排序(排序算法同学们自选,冒泡、选择、堆…均可),排序结果通过管道传递给第一个进程;第一个进程显示排序结果。选做题:利用LINUX进程间共享内存机制实现第2题,亦即将管道用共享内存机制来代替。实验内容(1)新建文件,编辑程序如下:#define_POSIX_SOURCE#include<stdio.h>#include<stdlib.h>#include<fcntl.h>#include<sys/types.h>#include<unistd.h>#include<stdarg.h>#include<string.h>#include<sys/file.h>intmain(intargc,char*argv[]){intnum,fd,i;FILE*f;charbuff[100];fd=open("number.txt",O_RDWR);flock(fd,LOCK_EX);if(fd<=0){printf("openerror\n");return1;}f=(FILE*)fdopen(fd,"r+");if(f==NULL){printf("fdopenerror\n");return1;}for(i=1;i<=100000;i++){lseek(fd,0,SEEK_SET);fscanf(f,"%d",&num);sprintf(buff,"%d\n",num+1);lseek(fd,0,SEEK_SET);write(fd,buff,strlen(buff));}flock(fd,LOCK_UN);fclose(f);return0;}执行结果如下:(1)新建文件,编写程序如下:#include<stdio.h>#include<unistd.h>#include<sys/types.h>#include<string.h>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\n",num);fflush(stdout);sum+=num;}close(fd1[0]);sprintf(str,"%d",sum);write(fd2[1],str,strlen(str));close(fd2[1]);_exit(0);}else{intn;charstr[10];close(fd1[0]);close(fd2[1]);while(1){scanf("%d",&n);if(n==-1)break;sprintf(str,"%d\n",n);write(fd1[1],str,strlen(str));}close(fd1[1]);read(fd2[0],str,100);close(fd2[0]);printf("\nsumis%s\n",str);fflush(stdout);_exit(0);}

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论