📄 ysmsgqueue.h
字号:
#include "ysheader.h"class CBMessageQueue{ public: CBMessageQueue() { } ~CBMessageQueue() { } public: int m_MessageQid; //消息队列的qid public: int Open_MessageQueue(key_t keyval) //创建一个消息队列 { int qid=0; if((qid=msgget(keyval,IPC_CREAT|0660))==-1) { return -1; } return qid; } int Send_Message(int qid,void* qbuf,int iSize) //发送消息 { int result=-1; if((result=msgsnd(qid,qbuf,iSize,0))==-1) return -1; return result; } int Read_Message(int qid,long type,void* qbuf,int iSize) //从消息队列中读取消息 { int result=-1; if((result=msgrcv(qid,qbuf,iSize,type,0))==-1) return -1; return result; } int Peek_Message(int qid,long type) //检查是否有满足条件的消息 { int result=-1; if((result=msgrcv(qid,NULL,0,type,IPC_NOWAIT))==-1) { if(errno==E2BIG) return 1; } return 0; } int Get_QueueDs(int qid,struct msqid_ds *qbuf) //获取消息队列的内部数据结构 { if(msgctl(qid,IPC_STAT,qbuf)==-1) return -1; return 0; } int Change_QueueMode(int qid,char *mode) //改变队列的模式 { struct msqid_ds tmpbuf; sscanf(mode,"%ho",&tmpbuf.msg_perm.mode); if(msgctl(qid,IPC_SET,&tmpbuf)==-1) return -1; return 0; } int Remove_MessageQueue(int qid) //删除一个消息队列 { if(msgctl(qid,IPC_RMID,0)==-1) return -1; return 0; }};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -