消息队列示例
来源:互联网 发布:域名cc和com知乎 编辑:程序博客网 时间:2024/05/22 09:48
消息队列是将消息按队列的方式组织成的链表,每个消息都是其中的一个节点。
消息队列的操作函数有一下几个:
int msgget(key_t key, int msgflg) //创建1个消息队列
int msgsnd(int msqid, const void *msgptr, int msgsz , int msgflg) //发送消息到消息队列中
int msgrcv (int msqid,void *msgptr, int msgsz ,long msgtyp, int msgflag) //从消息队列中读取一个消息
int msgctl (int msqid, int cmd ,struct msqid_ds *buf) //消息队列控制函数
示例如下:
/*example_send*/
#include <string.h>
#include <sys/types.h>
#include <sys/msg.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
int msg_id,msg_flags;
int reval;
char send_msg[64];
msg_flags = IPC_CREAT | 0666;
msg_id = msgget((key_t)456,msg_flags); //创建消息队列并返回消息队列id
if(-1 == msg_id) //判断是否创建成功(返回-1 为失败)
{
printf("msg create error.\n");
exit(EXIT_FAILURE);
}
memset(send_msg,0,64);
sprintf(send_msg,"hi, I'm %d.\n",getpid()); // 打印字符串到send_msg 中
reval = msgsnd(msg_id,send_msg,sizeof(send_msg),0);//将send_msg中的消息发送到消息队列中,消息队列的id为msg_id
if(-1 == reval) //发送消息失败返回-1
{
printf("message send error.\n");
exit(EXIT_FAILURE);
}
else
printf("Send message:%s\n",send_msg);
return 0;
}
/*example_rcvr*/
#include <string.h>
#include <sys/types.h>
#include <sys/msg.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
int msg_id,msg_flags;
int reval;
char send_msg[64];
msg_flags = IPC_CREAT | 0666;
msg_id = msgget((key_t)456,msg_flags);
if(-1 == msg_id) //判断是否创建成功(返回-1 为失败)
{
printf("msg create error.\n");
exit(EXIT_FAILURE);
}
memset(send_msg,0,64);
reval = msgrcv(msg_id,send_msg,64,0,0);//从消息队列中读取一个消息
if(-1 == reval) //发送消息失败返回-1
{
printf("message send error.\n");
exit(EXIT_FAILURE);
}
else
printf("Received message:%s\n",send_msg);
reval = msgctl(msg_id,IPC_RMID,0);
if(-1 == reval)
{
printf("remove msg queue error\n");
exit(EXIT_FAILURE);
}
return 0;
}
- 消息队列示例程序
- 消息队列示例
- 线程消息队列 示例
- vxWorks消息队列示例
- Redis消息队列示例
- 消息队列MassageComponent示例
- 一个简单的C#消息队列示例
- 一个简单的C#消息队列示例
- 消息队列创建流程及代码示例
- ucos-ii示例5:消息队列测试
- Linux IPC机制:消息队列示例
- 消息队列创建以及使用示例
- Linux下的消息队列示例
- [示例] -- redis作为消息队列实现代码
- c# .net windows消息队列简单应用示例
- RabbitMQ .NET消息队列使用入门(一)【简单示例】
- ActiveMQ消息队列获取每个队列中的消费者数、剩余消息数、已消费数、队列名等信息 示例
- 利用线程来实现消息队列互发消息(示例代码)
- Beyond compare download and installation.
- Android fill_parent、wrap_content和match_parent的区别
- linux页面回收浅析
- 项目中使用CLR编程
- Kubernetes初探:原理及实践应用
- 消息队列示例
- 几款不错的图表
- 第十周项目一(1)拓展题目
- 黑马程序员 java学习笔记 Day11:反射机制详解
- 显著性CVPR12年的三篇论文-Ali Borji
- JS中创建类的方法
- -异常处理
- logrotate 日志分割工具的配置使用
- Unity3D 4.0新功能:Mecanim动画系统基础教程