【问题标题】:Output getting altered/truncated from message queue消息队列中的输出被更改/截断
【发布时间】:2016-08-09 11:12:14
【问题描述】:

我正在尝试掌握消息队列的窍门。出于某种原因,当显示我输入回控制台的消息时,字符串有时会被截断或更改。有谁知道为什么会发生这种情况?

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);
        }
    }
}

【问题讨论】:

标签: c multithreading message-queue


【解决方案1】:

我发现我的错误在于我传递了 struct msgbuf 的大小而不是 msgbuf.mtext 的大小。

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

【讨论】:

    猜你喜欢
    • 2019-08-23
    • 2017-02-24
    • 1970-01-01
    • 2017-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多