国嵌消息队列实验代码解析
2014-05-13 11:29
260 查看
#include<sys/types.h>
#include<sys/msg.h>
#include<unistd.h>
struct msg_buf
{
int mtype; //消息类型
char data[255]; //消息文本
};
int main()
{
key_t key;
int msgid;
int ret;
struct msg_buf msgbuf;
key=ftok("/tmp/2",'a'); //取得文件对应的键值
printf("key=[%x]\n",key);
msgid=msgget(key,IPC_CREAT|0666); //打开键值对应的消息队列,若没有则创建此消息对列,并返回其标识符
if(msgid==-1)
{
printf("create error\n");
return -1;
}
msgbuf.mtype=getpid(); //将进程ID作为消息类型
strcpy(msgbuf.data,"test haha"); //填充消息文本
ret=msgsnd(msgid,&msgbuf,sizeof(msgbuf.data),IPC_NOWAIT); //将缓冲中的消息发送到消息队列中
if(ret==-1)
{
printf("send message err\n");
return -1;
}
memset(&msgbuf,0,sizeof(msgbuf)); //清零缓冲
ret=msgrcv(msgid,&msgbuf,sizeof(msgbuf.data),getpid(),IPC_NOWAIT); //从消息队列中接收消息
if(ret==-1)
{
printf("recv message err\n");
return -1;
}
printf("recv msg=[%s]\n",msgbuf.data);
}
#include<sys/msg.h>
#include<unistd.h>
struct msg_buf
{
int mtype; //消息类型
char data[255]; //消息文本
};
int main()
{
key_t key;
int msgid;
int ret;
struct msg_buf msgbuf;
key=ftok("/tmp/2",'a'); //取得文件对应的键值
printf("key=[%x]\n",key);
msgid=msgget(key,IPC_CREAT|0666); //打开键值对应的消息队列,若没有则创建此消息对列,并返回其标识符
if(msgid==-1)
{
printf("create error\n");
return -1;
}
msgbuf.mtype=getpid(); //将进程ID作为消息类型
strcpy(msgbuf.data,"test haha"); //填充消息文本
ret=msgsnd(msgid,&msgbuf,sizeof(msgbuf.data),IPC_NOWAIT); //将缓冲中的消息发送到消息队列中
if(ret==-1)
{
printf("send message err\n");
return -1;
}
memset(&msgbuf,0,sizeof(msgbuf)); //清零缓冲
ret=msgrcv(msgid,&msgbuf,sizeof(msgbuf.data),getpid(),IPC_NOWAIT); //从消息队列中接收消息
if(ret==-1)
{
printf("recv message err\n");
return -1;
}
printf("recv msg=[%s]\n",msgbuf.data);
}
相关文章推荐
- Openstack的消息队列机制及其部分代码解析(非oslo.message)
- 分布式消息队列 RocketMQ源码解析:Filtersrv
- [nRF51822] 9、基础实验代码解析大全 · 实验12 - ADC
- 分布式消息队列 RocketMQ源码解析:事务消息
- 消息队列解析
- 一、消息队列之ActiveMQ的安装、配置和C#样例代码
- 进程间通信:消息队列(代码实现)
- 【代码片段】Linux 进程间通信---消息队列
- 共享一段CMPP编程时候,移动网关返回CMPP_SUBMIT_RESP消息中,解析Msg_Id字段的代码
- PHP与C(或其它语言)通过消息队列进行通讯,完整代码
- 【Android自助餐】Handler消息机制完全解析(二)MessageQueue的队列管理
- 管道、消息队列、共享内存几种IPC通信,简单的代码
- 分布式消息队列RabbitMQ之三:四种典型使用场景和代码示例
- QT代码解析(一)QT消息和事件路由机制
- 分布式消息队列 RocketMQ源码解析:Filtersrv
- 分布式消息队列 RocketMQ源码解析:事务消息
- 主线程中有多个handler的情况,只会共用一个消息队列(看代码)
- oracle提示 ORA-12154: TNS: 无法解析指定的连接标识符 OCIEnvCreate 失败, 返回代码为-1,但错误消息文本不可用
- Java利用Redis实现消息队列的示例代码
- RabbitMQ学习系列二:.net 环境下 C#代码使用 RabbitMQ 消息队列