操作系统消息接受与发送实验报告.doc
文本预览下载声明
嘉应学院计算机科学与技术系
试 验 报 告
课程名称 操作系统 实验名称 消息接收与发送 实验地点 指导老师 实验时间 提交时间 班 级 姓 名 座 号
一、实验目的和要求
1、了解什么是消息
2、熟悉消息传送的机理 二、实验环境、内容和方法
实验内容和要求:
消息的创建、发送和接收。使用系统调用msgget( ),msgsnd( ),msgrev( ),及msgctl( )编制一长度为1k的消息发送和接收的程序。
实验方法:通过上机操作完成各内容。
实验环境:
实验用PC机一台,Intel Pentium Ⅲ 处理器,1.00GHz,256MB内存,使用操作系统为Windows XP Professional,安装OFFICE 2003。
三、实验过程描述
参考程序:编制二个程序client.c和server.c,分别用于消息的发送与接收
1.client.c
#include stdio.h
#include stdlib.h
#include sys/types.h
#include sys/msg.h
#include sys/ipc.h
#define MSGKEY 75
struct msgform
{ long mtype;
char mtext[1000];
}msg;
int msgqid;
void client()
{
int i;
msgqid=msgget(MSGKEY,0777); /*打开75#消息队列*/
for(i=10;i=1;i--)
{
msg.mtype=i;
printf(“(client)sent\n”);
msgsnd(msgqid,msg,1024,0); /*发送消息*/
}
exit(0);
}
main( )
{
client( );
}
2、server.c
#include stdio.h
#include stdlib.h
#include sys/types.h
#include sys/msg.h
#include sys/ipc.h
#define MSGKEY 75
struct msgform
{ long mtype;
char mtext[1000];
}msg;
int msgqid;
void server( )
{
msgqid=msgget(MSGKEY,0777|IPC_CREAT); /*创建75#消息队列*/
do
{
msgrcv(msgqid,msg,1030,0,0); /*接收消息*/
printf(“(server)received\n”);
}while(msg.mtype!=1);
msgctl(msgqid,IPC_RMID,0); /*删除消息队列,归还资源*/
exit(0);
}
main( )
{
server( );
}
四、结果分析
显示全部