博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
练习代码,写个消息队列发送接收
阅读量:5972 次
发布时间:2019-06-19

本文共 2352 字,大约阅读时间需要 7 分钟。

#include 
#include
#include
#include
#include
#include
#include
#include "message.h"int qid=0;int message_init(){ key_t key = ftok(MSG_PATH, MSG_PJID); if(key == -1) { perror("ftok failed"); exit(EXIT_FAILURE); } if((qid = msgget(key, IPC_CREAT | 0666)) == -1) { perror("create message queue failed"); exit(EXIT_FAILURE); } return qid; }int message_send(int msgid, const STRUCT_MSG_BUF* pmsg, int flag){ if( pmsg != NULL && pmsg->length >0 ) { if( msgsnd(msgid, pmsg, sizeof(STRUCT_MSG_BUF), 0) == -1) { perror("send msg to message queue failed"); exit(EXIT_FAILURE); } } return 0; } int message_receive(int msgid, STRUCT_MSG_BUF* pmsg, int flag){ if( msgrcv(msgid, pmsg, sizeof(STRUCT_MSG_BUF), 0, flag) == -1 ) { perror("receive msg from message queue failed"); exit(EXIT_FAILURE); } return 0;}
#ifndef __MESSAGE_H#define __MESSAGE_H#include 
#include
#include
#define MSG_PATH "./msg/msg"#define MSG_PJID 1818 #define MAX_MSG_LENGTH 256typedef struct tag_msg{ int length; char data[MAX_MSG_LENGTH];} STRUCT_MSG_BUF;int message_init();int message_receive(int msgid, STRUCT_MSG_BUF* pmsg, int flag);//int message_send(int msgid, const STRUCT_MSG_BUF* pmsg, int flag)int message_send(int msgid, const STRUCT_MSG_BUF* pmsg, int flag);#endif

 

#include 
#include
#include
#include "game.h"#include "engine.h"#include "message.h"int gqid=0;void game_init(){ //engine_init(); gqid=message_init();}void game_start(){ //engine_init(); game_send_msg(); game_receive_msg();}int game_abort(char* msg){ engine_shut(); fprintf(stderr, "%s\n", msg); exit(EXIT_FAILURE); }// void game_over(){ // print game over //engine_shut(); exit(EXIT_SUCCESS);}void game_send_msg(){ char test[]="hello"; STRUCT_MSG_BUF msg={
0}; memset(&msg, 0, sizeof(STRUCT_MSG_BUF)); msg.length=5; strncpy(msg.data, test, sizeof(test)); message_send(gqid, &msg, 0);}void game_receive_msg(){ STRUCT_MSG_BUF msg={
0}; memset(&msg, 0, sizeof(STRUCT_MSG_BUF)); message_receive(gqid, &msg, 0);}

 

转载于:https://www.cnblogs.com/unixshell/p/3341215.html

你可能感兴趣的文章
Linux备份ifcfg-eth0文件导致的网络故障问题
查看>>
2018年尾总结——稳中成长
查看>>
通过jsp请求Servlet来操作HBASE
查看>>
Shell编程基础
查看>>
Shell之Sed常用用法
查看>>
Centos下基于Hadoop安装Spark(分布式)
查看>>
mysql开启binlog
查看>>
设置Eclipse编码方式
查看>>
分布式系统唯一ID生成方案汇总【转】
查看>>
并查集hdu1232
查看>>
Mysql 监视工具
查看>>
Linux Namespace系列(09):利用Namespace创建一个简单可用的容器
查看>>
博客搬家了
查看>>
Python中使用ElementTree解析xml
查看>>
jquery 操作iframe、frameset
查看>>
解决vim中不能使用小键盘
查看>>
Eclipse Java @Override 报错
查看>>
linux的日志服务器关于屏蔽一些关键字的方法
查看>>
mysql多实例实例化数据库
查看>>
javascript 操作DOM元素样式
查看>>