/
/消息队列的发送与接收
#include <stdio.h>
#include <sys/types.h>
#include <sys/msg.h>
#include <unistd.h>
#include <string.h>//不包含此头文件,会出现“警告:隐式声明与内建函数strcpy不兼容”
struct msg_buf
{
int mtype;
char data[255];
};
int main(int argc, char *argv[])
{
key_t key;
int msgid;
int ret;
struct msg_buf msgbuf;
key=ftok("2",'a');//2为对应文件路径 不存在也无妨,a不用管 只要不为0即可
printf("key=[%x]\n",key);
msgid=msgget(key,IPC_CREAT|0666);//通过文件对应
if(msgid==-1)
{
printf("creat error\n");
return -1;
}
msgbuf.mtype=getpid();
strcpy(msgbuf.data,"jia anhao");
//发送
ret=msgsnd(msgid,&msgbuf,sizeof(msgbuf.data),IPC_NOWAIT);
//magid将消息发送到消息队列的标识符,msgbuf为要发送的内容,sizeof为数据长度,最后一个为:数据满时的处理方法
if(ret==-1)
{
printf("send message error\n");
return -1;
}
//接收函数
ret=msgrcv(msgid,&msgbuf,sizeof(msgbuf.data),getpid(),IPC_NOWAIT);
if(ret==-1)
{
printf("recv message error\n");
return -1;
}
printf("recv msg= [%s]\n",msgbuf.data);
return 0;
}
相关文章
- .NET为什么推荐它作为RabbitMQ消息队列的首选开发工具
- 基于redis的延迟消息队列设计
- tcp socket的发送与接收缓冲区
- KAFKA 消息队列的分类
- SpringBoot学习笔记(11)-----SpringBoot中使用rabbitmq,activemq消息队列和rest服务的调用
- 几种MQ消息队列对比与消息队列之间的通信问题
- UIScrollView子类从不接收用于滑动的touchesBegan消息
- 柯南君:看大数据时代下的IT架构(2)消息队列之RabbitMQ-基础概念详细介绍
- java开发微服务架构设计消息队列的水有多深
- jedis实现redis的消息队列、发布对象消息、字节数组与字符串相互转换