




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、操作系统实验报告年级、专业、班级2013级计科6班姓名张行实验题目进程间通信实验时间2015-10-31实验地点0410实验成绩 实验性质验证性 设计性 综合性教师评价:算法/实验过程正确; 源程序/实验内容提交 程序结构/实验步骤合理;实验结果正确; 语法、语义正确; 报告规范; 其他: 评价教师签名:一、实验目的 Ø 了解管道通信的特点,掌握管道通信的使用方法。Ø 了解消息队列通信机制及原理,掌握消息队列相关系统调用的使用方法及功能。二、实验项目内容管道通信-实验内容:¢ 1.父进程创建管道和两个子进程p1和p2¢ 2.子进程p1打开给定文件(如果没
2、有,则创建文件),并向文件中写数据,写完关闭文件,然后向管道写入一条消息“ok",目的是通知进程p2可以读取文件内容了。¢ 3.子进程p2通过管道读取消息,如果消息是“ok”,则打开文件,读取文件内容,并将其输出到屏幕上,关闭文件.¢消息队列-实验内容Ø 父进程创建消息队列和两个子进程p1和p2Ø 子进程p1打开给定文件(如果没有,则创建文件),并向文件中写数据,写完关闭文件,然后向消息队列写入一条消息“ok”,目的是通知进程p2可以读取文件内容了。Ø 子进程p2从消息队列读取消息,如果收到消息“ok”,则打开文件,读取文件内容,并将
3、其输出道屏幕上,关闭文件。三、实验过程与算法int pipe(int fd2)功能:创建管道int read(int fd, void *buf, int count);功能:从参数fd指定的读端读取管道数据到大小为count的缓存buf中,返回实际读取到的字节数。int write(int fd, void *buf, int count);功能:向参数fd指定的写端从缓存buf中取出count个字节到管道中,返回值为实际写入的字节数int msgsnd(int msqid, const void * ptr, size_t nbytes, int flag) 功能:往消息队列写消息,即发送
4、消息。int msgrcv(int msqid, const void * ptr, size_t nbytes ,long type, int flag) ;功能:从消息队列读消息,即接收消息。管道代码如下:#include<stdio.h>#include<stdlib.h>#include<string.h>#include<unistd.h>#include<sys/types.h>int main(void) int fd2,byte; pid_t childpid1; pid_t childpid2; FILE *fp;
5、char s20; char string = "ok" char readbuffer80; pipe(fd); int r_fd = fd0; int w_fd = fd1; if(childpid1 = fork()= -1) perror("fork error!"); exit(1); else if(childpid1 = 0) printf("childpid1 pid is:%dn",getpid(); if(fp=fopen("hello.txt","w")=NULL) pri
6、ntf("The file %s not be open.n","hello.txt"); return 0; fputs("Hello!",fp); printf("successn"); fclose(fp); close(r_fd);/close write write(w_fd,string,strlen(string); exit(0); else wait(NULL); if(childpid2 = fork()= -1) perror("fork error!"); exit(1)
7、; else if(childpid2 = 0) printf("childpid2 pid is:%dn",getpid(); close(w_fd);/close read byte = read(r_fd,readbuffer,sizeof(readbuffer); if(strcmp("ok",readbuffer)=0) if(fp=fopen("hello.txt","r")=NULL) printf("The file %s notopen.n","hello.txt&q
8、uot;); return; while(fgets(s,20,fp)!=NULL) printf("%sn",s); fclose(fp); else wait(NULL); return 0;消息队列代码如下:#include<stdio.h>#include<sys/msg.h>#include<fcntl.h>#include<stdlib.h>#include<string.h>#define MAX 100struct msgbuff long mtype; char dataMAX;int main(
9、) FILE *fp; pid_t pid1,pid2; key_t key; char s20; char string = "ok" if(key=ftok("/home/zh",'g')<0) printf("key get error!n"); return -1; int mgsid; if(mgsid=msgget(key,IPC_CREAT|0666)= -1) printf("creat errorn"); return -1; pid1=fork(); if(pid1<
10、0) printf("fork creat error!n"); exit(1); else if(pid1=0) printf("pid1 pid is:%dn",getpid(); printf("Sending the message.n"); sleep(1); struct msgbuff msg1; msg1.mtype=getppid(); if(fp=fopen("hello.txt","w")=NULL) printf("The file %s not openn&q
11、uot;,"hello.txt"); return; fputs("Hello!",fp); fclose(fp); strcpy(msg1.data,"ok"); if(msgsnd(mgsid,&msg1,sizeof(msg1.data),0)<0) printf("Sending error!n"); exit(1); else printf("complete sending !n"); exit(0); else wait(NULL); pid2=fork(); if(
12、pid2<0) printf("fork creat error!n"); exit(1); else if(pid2=0) printf("pid2 pid is:%dn",getpid(); printf("Receiving the message.n"); sleep(1); struct msgbuff msg2; /msg2.mtype=getppid(); if(msgrcv(mgsid,&msg2,MAX,getppid(),0)<0) printf("receiving error!n&
13、quot;); exit(1); else printf(" complete receiving!n"); if(strcmp("ok",msg2.data)=0) if(fp=fopen("hello.txt","r")=NULL) printf("The file %s no opened.n","hello.txt"); return; while(fgets(s,20,fp)!=NULL) printf("the message is:%sn",s); fclose(fp); else wait(NULL); exit(0); return 0; 四、实验结果及分析和(或)源程序调试过程(包含程序使用方法、程序运行截图),实验过程中遇到的问题分析与心得体会。(实验报告中最重要的部分,应尽量详细,重点描述自己遇到的问题以及解决方法)管道通信运行结果如下:消息队列运行结果如下两个通信都有一个消息传输的过程在里面,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国幼儿教育试题及答案
- 村办产业面试题目及答案
- 爱情著名测试题及答案
- 单位应聘笔试试题及答案
- 产品测量考试题库及答案
- 分析纺织行业中的技术变革对考试的作用试题及答案
- 安徽中专考试题库及答案
- 2024广告设计师创意策划试题及答案
- 2024年美术设计师考试内容要点总结试题及答案
- 2024年纺织品检验员考试技能要求试题及答案
- 数据库原理及应用教程(第5版) (微课版)课件 第4章 关系型数据库理论
- 药事管理与法规智慧树知到答案2024年石河子卫生学校
- 人工智能训练师理论知识考核要素细目表五级
- 2024年贵州省中考理科综合试卷(含答案)
- 110kV变电站专项电气试验及调试方案
- DL-T901-2017火力发电厂烟囱(烟道)防腐蚀材料
- 篮球智慧树知到期末考试答案章节答案2024年浙江大学
- GB/T 3428-2024架空导线用镀锌钢线
- ISO 15609-1 金属材料焊接工艺规程及评定-焊接工艺规范中文版
- MOOC 英语语法与写作-暨南大学 中国大学慕课答案
- 2024年山东省济南市历下区中考二模地理试题
评论
0/150
提交评论