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

下载本文档

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

文档简介

1、实验三进程间通信班级:xxx学号:xxx姓名:xxx分数:1、实验目的:Linux 系统的进程通信机构( IPC)允许在任意进程间大批量的交换数据。本实验的目的是了解和熟悉 Linux 支持的通信机制、共享存储区机制及信号量机制。2、实验预备内容:阅读 Linux 系统的 msg.c sem.c shm.c等源码文件,熟悉 Linux 的三种通信机制。3、实验内容:(1) 消息的创建,发送和接收(2) 使用系统调用 msgget(),msgsnd(), msgrev()及 msgctl()编制一长度为1k 的消息发送和接收程序。(1) 为了便于操作和观察结果,用一个程序作为“引子”,先后for

2、k ()两个子进程, SERVER 和 CLIENT ,进行通信。(2) SERVER 端建立一个 Key 为 75 的消息队列,等待其他进程发来的消息。当遇到类型为 1 的消息,则作为结束信号,取消该队列,并退出SERVER。SERVER 每接收到一个消息后显示一句 “(server)received”。(3) CLIENT 端使用 Key 为 75 的消息队列,先后发送类型从 10 到 1 的消息,然后退出。最后一个消息,即是 SERVER 端需要的结束信号。 CLIENT 每发送一条信息后显示一句“ (client)sent”。(4) 父进程在 SERVER 和 CLIENT 均退出后结

3、束。4、源代码及运行截图:#include #include #include #include #define MSGKEY 75struct msgformlong mtype;char mtext1030;msg;int msgqid,i;void CLIENT() int i;msgqid=msgget(MSGKEY,0777);for (i=10;i=1;i-)msg.mtype=i;printf(client)sent n);msgsnd(msgqid,&msg,1024,0);/* 发送消息 msg 入 msgid 消息队列 */void SERVER()msgqid=msgge

4、t(MSGKEY,0777|IPC_CREAT); /* 由关键字获得消息队列 */ domsgrcv(msgqid,&msg,1030,0,0);/* 从msgid 消息队列接收消息msg*/printf(server)received n);while(msg.mtype!=1);/* 消息类型为1 时,释放队列*/msgctl(msgqid,IPC_RMID,0);void main()while(i=fork()=-1);if(!i) SERVER();while(i=fork()=-1);if(!i) CLIENT();wait(0);wait(0);5、实验感想本次实验的实验目的是了解和熟悉Linux 支持的通信机制、共享存储机制及信号量机制。在实验之前我们阅读了Linux 系统的 msg.c sem.c shm.c等源码文件,熟悉了 Linux 的三种通信机制。通过这次实验我深刻的了解到了 Linux 系统的进程通信机构允许在任意进程间大批量的交换

温馨提示

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

评论

0/150

提交评论