1

我得到了在 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);
}
4

0 回答 0