?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
班级?/p>
xxx
学号?/p>
xxx
姓名?/p>
xxx
分数?/p>
1
、实验目的:
Linux
系统的进程通信机构
?/p>
IPC
?/p>
允许在任意进程间大批量的交换数据?/p>
本实验的?/p>
的是了解和熟?/p>
Linux
支持的通信机制、共享存储区机制及信号量机制?/p>
2
?/p>
实验预备内容?/p>
阅读
Linux
系统?/p>
等源码文件,熟悉
Linux
的三种通信机制?/p>
3
?/p>
实验内容?/p>
?/p>
1
?/p>
消息的创建,发送和接收
?/p>
2
?/p>
使用系统调用
msgget()
?/p>
msgsnd()
?/p>
msgrev()
?/p>
msgctl()
编制一长度?/p>
1k
的消
息发送和接收程序?/p>
<
程序设计
>
?/p>
1
?/p>
为了便于操作和观察结果,用一个程序作为“引子”,先后
fork
()两个子进
程,
SERVER
?/p>
CLIENT
,进行通信?/p>
?/p>
2
?/p>
SERVER
端建立一?/p>
Key
?/p>
75
的消息队列,等待其他进程发来的消息。当?
到类型为
1
的消息,
则作为结束信号,
取消该队列,
并退?/p>
SERVER
?/p>
SERVER
每接收到一个消息后显示一句“(
server
?/p>
received
”?/p>
?/p>
3
?/p>
CLIENT
端使?/p>
Key
?/p>
75
的消息队列,先后发送类型从
10
?/p>
1
的消息,然后
退出?/p>
最后一个消息,
即是
SERVER
端需要的结束信号?/p>
CLIENT
每发送一?/p>
信息后显示一句“(
client
?/p>
sent
”?/p>
?/p>
4
?/p>
父进程在
SERVER
?/p>
CLIENT
均退出后结束?/p>
4
、源代码及运行截图:
#include <>
#include <sys/>
#include <sys/>
#include <sys/>
#define MSGKEY 75
struct msgform
{
long mtype;
char mtext[1030];
}msg;
int msgqid,i;
void CLIENT()
{
int i;
msgqid=msgget(MSGKEY,0777);
for (i=10;i>=1;i--)
{
=i;