我得到了在 Linux 中创建消息队列的任务。我需要使用msgnd()
和msgrcv()
功能。mtype
如果我的消息结构有两个字段,那么一切正常,mtext[]
但我需要再添加一个字段int mpid
。但是当我从 mpid 读取值时,它只是内存中的垃圾。我搜索了答案或示例,但只找到了具有两个字段的结构。我还能添加更多吗?
struct myBuff{
long mtype;
char mtext[255];
int mpid;
};
发件人代码
void add_message(int id, struct myBuff buff){
int size = strlen(buff.mtext) + 1 + sizeof(int)
if (size > 255 + sizeof(int))
exit(EXIT_FAILURE);
msgsnd(id, (struct msgbuf*)&buff, size, 0 | MSG_NOERROR);
}
接收器代码
void check_message(int id, struct myBuff* buff)
{
msgrcv(id, (struct msgbuf*)buff, 255 + sizeof(int), buff->mtype, 0 | MSG_NOERROR);
}