输出从消息队列中被更改/截断

时间:2016-04-17 20:16:22

标签: c multithreading message-queue

我正试图抓住消息队列。出于某种原因,当我显示我输入控制台的消息时,字符串有时会被截断或更改。有谁知道为什么会这样?

void *readFromQueue() {
    int ret;
    mbr = malloc(sizeof(struct msgbuf)); // Allocate space to mbr.
    while (TRUE) { // Forever...
        ret = (int) msgrcv(msgId, mbr, sizeof(struct msgbuf), myId, MSG_NOERROR | IPC_NOWAIT); // Receive a message 
        if (ret == -1) { // Check for error.
            //perror("Failed to receive message.");
        } else {
            printf("\t%160s", mbr->mtext);
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我发现我的bug是在传递struct msgbuf的大小而不是msgbuf.mtext的大小。

 ret = msgrcv(msgId, mbr, sizeof(mbr->mtext), myId, MSG_NOERROR | IPC_NOWAIT);