进程间基于共享存储区的通信

进程间基于共享存储区的通信

ID:36611401

大小:35.00 KB

页数:6页

时间:2019-05-12

进程间基于共享存储区的通信_第1页
进程间基于共享存储区的通信_第2页
进程间基于共享存储区的通信_第3页
进程间基于共享存储区的通信_第4页
进程间基于共享存储区的通信_第5页
资源描述:

《进程间基于共享存储区的通信》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、6实现工具PC机一台,Putty软件实现环境Linux系统环境实习内容(功能、目标)功能:编写一段程序,同时父进程创建两个子进程p1和p2;并使子进程p1与子进程p2通过共享存储区相互发送数据(512字节)。目标:(1)系统了解linux系统的通信机构IPC,掌握IPC中共享存储区通信机制,理解共享存储区通信的方法及特征;(2)掌握系统调用shmget()、shmat()、shmdt()、shmctl()的使用方法及其功能,理解共享存储区通信原理;(3)系统理解linux的三种通信机制。实现的思想、方法和技术(含数据结构、算法)进程能够

2、通过共享虚拟地址空间的若干个部分,然后对存储在共享存储区中的数据进行读和写来直接的彼此通信。操纵共享存储区的系统调用类似于消息机制,共有4个系统调用:intshmget(key_t,size_tsize,intshmflg);void*shmat(intshmid,constvoid*shmaddt,intshmflg);intshmdt(constvoid*shmaddr);intshmct1(intshimd,intcmd,structshmid_da*buf);建立新的共享区或返回一个已存在的共享存储区描述字的shmget(key

3、,size,flag);将物理共享区附接到进程虚拟地址空间的调用shmat(shmid,addr,flag);进程从其虚拟地址空间断接一个共享存储区的系统调用shmdt(addr);查询及设置一个共享存储区状态和有关参数的系统调用shmct1(shmid,cmd.buf).6主要代码注释#include#include#include#include#include#include#include

4、.h>#include#defineSHMKEY25#defineK1024intshmid;main(){inti,*pint,p1,p2;char*addr;while((p1=fork())==-1);if(p1==0){;头文件;创建子进程6shmid=shmget(SHMKEY,16*K,0777

5、IPC_CREAT);addr=shmat(shmid,0,0);pint=(int*)addr;for(i=0;i<5;i++){*pint=i;}Printf(“111111111%d”,*pint);

6、*pint++;}Sleep(3);Shmctl(shmid,IPC_RMID,0);}Else{while((p2=fork())==-1);if(p2==0){shmid=shmget(SHMKEY,8*K,0777);addr=shmat(shmid,0,0);pint=(int*)addr;for(i=0;i<5;i++){printf("22222222%d",*pint);}}创建共享存储区向共享存储区里写入数据创建子进程输出存储区中的数据6}}6结果分析(含实现中出错原因分析)实验结果如上截屏,实验过程中没有遇到问题。

7、程序通过子进程p1向共享存储区中写入数据,然后等待p2进程输出共享存储区中的数据。体验到了共享存储区的使用方法和原理。指导教师评语、评分评分:指导教师:年月日6

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。