首页 热点资讯 义务教育 高等教育 出国留学 考研考公

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

发布网友

我来回答

3个回答

热心网友

消息队列用于进程间通信,每个进程可以,只要该消息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;
}

热心网友

大半夜还在努力的编程猿啊,可以我是做.net的,帮不了您

热心网友

请放一本《APUE》在身边。追问这是什么?

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com