Chinaunix首页 | 论坛 | 博客
  • 博客访问: 294301
  • 博文数量: 70
  • 博客积分: 1990
  • 博客等级: 上尉
  • 技术积分: 686
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-02 08:52
文章分类

全部博文(70)

文章存档

2015年(2)

2014年(9)

2013年(2)

2012年(20)

2011年(1)

2010年(36)

分类: LINUX

2010-12-02 16:46:09

源码:
 
#include
#include
#include
typedef struct
{
int msg_type;
char msg_data[512];
} msgstr;
main()
{
int key = 4000;
int msgid = 0;
int msgid1 = 0;
//int msgid2 = 0;
int i=0,j=0;
msgstr send_msg,recv_msg;
//创建消息队列的第一个节点
msgid = msgget(key,IPC_CREAT|0660);
if(msgid < 0)
printf("message 1 create fail[msgid = %d]\n",msgid);
else
printf("message 1 create success[msgid = %d]\n",msgid);
//创建消息队列的第二个节点
msgid1 = msgget(key+100,IPC_CREAT|0660);
if(msgid1 < 0)
printf("message 2 create fail[msgid1 = %d]\n",msgid);
else
printf("message 2 create success[msgid1 = %d]\n",msgid);
//发送第一个节点消息
send_msg.msg_type = 100;
memset(send_msg.msg_data,0,512);
strcpy(send_msg.msg_data,"This is my first message.");
i = msgsnd(msgid,&send_msg,512,0);
if(i == 0)
printf("message 1 send success!\n");
else
printf("message 1 send failed!\n");
//发送第二个节点消息
send_msg.msg_type = 200;
memset(send_msg.msg_data,0,512);
strcpy(send_msg.msg_data,"This is my second message.");
i = msgsnd(msgid1,&send_msg,512,0);
if(i == 0)
printf("message 2 send success!\n");
else
printf("message 2 send failed!\n");
//发送第三个节点消息
send_msg.msg_type = 300;
memset(send_msg.msg_data,0,512);
strcpy(send_msg.msg_data,"This is my third message.");
i = msgsnd(0,&send_msg,512,0);
if(i == 0)
printf("message 3 send success!\n");
else
printf("message 3 send failed!\n");
//接收第一个节点消息
recv_msg.msg_type = 0;
memset(recv_msg.msg_data,0,sizeof(recv_msg.msg_data));
j = msgrcv(msgid,&recv_msg,512,0,IPC_NOWAIT);
if(j <= 0)
printf("message receive failed\n");
else
{
printf("message receive success[length: %d]\n",j);
printf("message type = %d\n",recv_msg.msg_type);
printf("message char data: %s\n",recv_msg.msg_data);
}
//接收第二个节点消息
recv_msg.msg_type = 0;
memset(recv_msg.msg_data,0,sizeof(recv_msg.msg_data));
j = msgrcv(msgid1,&recv_msg,512,0,IPC_NOWAIT);
if(j <= 0)
printf("message receive failed\n");
else
{
printf("message receive success[length: %d]\n",j);
printf("message type = %d\n",recv_msg.msg_type);
printf("message char data: %s\n",recv_msg.msg_data);
}
}
 
运行结果:
 
阅读(1094) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-12-03 15:24:02

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com