linux系统编程中的消息队列该怎么使用呀??

 我来答
gcpfk713
2014-02-09 · TA获得超过1969个赞
知道小有建树答主
回答量:2672
采纳率:0%
帮助的人:1004万
展开全部
消息队列用于进程间通信,每个进程可以,只要该消息queueID队列

的#ifndef CMSGOP_H

#定义CMSGOP_H

#包括类型。 H>

#包括ipc.h>

#包括msg.h>中

类CMsgOp

{

公众:

CMsgOp ();

虚拟CMsgOp();

typedef结构_customMessageFormat {

整数PROCESSID;

整数CMD;

整数commandArg;

} CCustomMessageFormat; BR p>诠释的init();

整数发送(常量CCustomMessageFormat&消息);

整数接收(CCustomMessageFormat&消息);

私人:

整数msgQueueID;

结构msgbuf sendBuf;

结构msgbuf recvBuf;

};

#ENDIF / / CMSGOP_H

的#include“ cmsgop.h“

#包括中

#包括中

#包括中

CMsgOp :: CMsgOp()
> {

}

CMsgOp ::CMsgOp()

{

了msgctl(msgQueueID,IPC_RMID,NULL);

}

BR />整型CMsgOp :: init()中

的key_t的key = ftok的(“/ home/maemo/tmp2”,1);

如果(-1 ==键) {

PERROR(“ftok的失败!”);

返回-1;

}

整数RET = msgget(键,IPC_CREAT);
>如果(-1 == RET)

{

PERROR(“创建消息队列失败!”);

返回-1;

}

msgQueueID = RET;

返回0;

}

整数CMsgOp ::发送(常量CCustomMessageFormat&消息)

{的memcpy(sendBuf.mtext,及讯息,大小(CCustomMessageFormat));

sendBuf.mtype = 1;

整数RET =的msgsnd(msgQueueID,&sendBuf,大小(CCustomMessageFormat),0);

如果(-1 = = RET)

{

PERROR(“消息发送失败!”);

返回RET;

}

}

整数CMsgOp: :接收(CCustomMessageFormat&消息)

{

整数RET =的msgrcv(msgQueueID,与recvBuf,大小(CCustomMessageFormat),0,IPC_NOWAIT);

如果( - 1 == RET) {

PERROR(“接收消息失败!”);

返回-1;

}

的memcpy(&消息,recvBuf.mtext,大小(CCustomMessageFormat ));

返回RET;
}
百度网友3212b2c
2014-02-09 · 超过74用户采纳过TA的回答
知道小有建树答主
回答量:518
采纳率:0%
帮助的人:155万
展开全部
大半夜还在努力的编程猿啊,可以我是做.net的,帮不了您
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友e1acfe0ad2
2014-02-09 · 超过30用户采纳过TA的回答
知道答主
回答量:164
采纳率:0%
帮助的人:85.4万
展开全部
请放一本《APUE》在身边。
追问
这是什么?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式