- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验四 进程间通信实验(一)
实验目的:
通过基础实验,基本掌握共享内存的程序设计。
通过编写程序,使读者掌握消息队列的设计方法。
实验内容:
共享内存程序设计:创建两个进程,在A进程中创建一个共享内存,并向其写入数据,通过B进程从共享内存中读出数据。
消息队列程序设计:创建一个消息队列,如何使用消息队列进行两个进程(发送端和接受端)之间的通信,包括消息队列的创建、消息发送与读取、消息队列的撤销和删除等多种操作。
实验过程:
(一)共享内存程序设计
函数说明:共享内存的实现分为两个步骤,第一步是创建共享内存,这里用到的函数是shmget(),也就是从内存中获得一段共享内存区域。第二步映射共享内存,也就是把这段创建的共享内存映射到具体的进程空间中,这里使用的函数是shmat()。到这里,就可以使用这段共享内存了,也就是可以使用不带缓冲的I/O读写命令对其进行操作。除此之外,当然还有撤销映射的操作,其函数为shmdt()。
共享内存的用法:使用共享内存进行进程间通信一般要经历下面几个步骤:
分配:进程通过调用shmget来分配一个共享内存块。
映射:要让一个进程获取对一块共享内存的访问,这个进程必须先调用shmat映射共享内存。
脱离与释放:当进程结束使用共享内存时,使用shmdt使共享内存脱离进程。当不再需要共享内存时,使用shmctl(sid,IPC_RMID,0)删除它。
实验步骤及代码:
1)自己建立文件夹,然后分别编辑shm_com.h、shm1.c、shm2.c.
/*shm_com.h*/
#define TEXT_SZ 2048
struct shared_use_st
{
int written_by_you;
char some_text[TEXT_SZ];
};
----------------------------------------------------------
----------------------------------------------------------
功能描述:本程序申请和分配共享内存,然后轮询并读取共享内存中的数据,直至读到“end”
/*shm1.c*/
#includeunistd.h
#includestdio.h
#includestdlib.h
#includestring.h
#includesys/types.h
#includesys/ipc.h
#includesys/shm.h
#include shm_com.h
int main(void)
{
int running=1;
void *shared_memory=(void *)0;
struct shared_use_st *shared_stuff;
int shmid;
/*创建共享内存*/
shmid=shmget((key_t) 1234,sizeof(struct shared_use_st),
0666|IPC_CREAT);
if(shmid==-1)
{
fprintf(stderr,shmget failed\n);
exit(EXIT_FAILURE);
}
/*映射共享内存*/
shared_memory=shmat(shmid,(void *)0,0);
if(shared_memory==(void *)-1)
{
fprintf(stderr,shmat failed\n);
exit(EXIT_FAILURE);
}
printf(Memory attached at %X\n,(int)shared_memory);
/*让结构体指针指向这块共享内存*/
shared_stuff=(struct shared_use_st *)shared_memory;
/*控制读写顺序*/
shared_stuff-written_by_you=0;
/*循环地从共享内存中读数据,直到读到“end”为止*/
while(running)
您可能关注的文档
- 语文5-19《范进中举》教材1(人教版九年度级上).ppt
- 大学生绿色消费调研问卷.doc
- 美联英语短新闻玩具不再专属儿童“童心未泯一代”崛起.doc
- 全路直特和跨局特快交路.doc
- 美容汇总女生看了绝对不后悔.doc
- 语文必修二第三单元散文(2)菱角喜剧秦牧.ppt
- 我国山水画和西方风景画1.ppt
- 我国汽车节公益活动(新2).ppt
- 语文第21课《庐山云雾》教材(冀教版七年度级下).ppt
- 我国人财富传承为何往往富不过三代.ppt
- 2025年自考专业(公共关系)试卷【真题汇编】附答案详解.docx
- 2025年自考专业(公共关系)试卷【真题汇编】附答案详解.docx
- 2025年自考专业(公共关系)试卷A4版附答案详解.docx
- 2025年自考专业(公共关系)试卷【典优】附答案详解.docx
- 2025年日语J.TEST考试CR级别试卷.docx
- 2025年自考专业(公共关系)试卷【历年真题】附答案详解.docx
- 2025年物业管理师考试物业管理师考试物业管理师考试物业管理职业道德与法规宣传试题.docx
- 小学生上网的调查报告.pptx
- 2025年自考专业(公共关系)自我提分评估附答案详解(模拟题).docx
- 2025年外贸跟单员职业资格考试试卷:外贸跟单员国际贸易国际贸易物流信息化建设与应用试题.docx
最近下载
- DB37∕T 242-2021 建筑消防设施检测技术规程.docx
- PE管材验收标准(SDR17.6).docx VIP
- 复旦大学《计算机体系结构》期末考试两套试卷(含答案).pdf VIP
- 中国近现代史纲要知到课后答案智慧树章节测试答案2025年春海南大学.docx VIP
- 形考作业3:基于UML的大学图书馆图书信息管理系统设计实验.docx VIP
- 大学《地震工程学》课程课件.pptx
- 2024年二建继续教育-基于建筑信息模型、虚拟施工及网络的项目管理理论及实践1、2答案.docx VIP
- 2024年二建继续教育-剖析价值工程及如何运用价值工程优选设计方案1、2答案.docx VIP
- 茶颜悦色案例分析.pptx VIP
- yolov9论文中文翻译.docx VIP
文档评论(0)