C - msgrcv为收到的邮件添加了字符,非常奇怪

时间:2015-04-01 03:09:46

标签: c message-queue

所以我的msgrcv()函数调用效果很好,但它会将字符添加到从其他进程收到的内容中。

发件人进程发送 hello 的地方,接收者进程收到 hello @ \ n hello \ n @ hello @ ,因为它随机打印不同的东西,这很难通过一些字符修剪来作弊。

代码:

    if (msgrcv(clientQueueID, &msg, sizeof(msg.data), 0, 0) == -1)
    {
        // No message received from client
    }
    else
    { .........

在这种情况下,打印msg.data表明它附加了额外的字符。

这就是我打印的方式:

printf("RECEIVED MESSAGE LENGTH %d: '%s'\n", (int)strlen(msg.data), msg.data);

任何人都有任何想法为什么会这样?

1 个答案:

答案 0 :(得分:0)

我知道这是一个奇怪的问题......事实证明这对我的客户来说是一个问题。我有一个简单的小功能,扫描' \ n'并将其替换为' \ 0'去除"删除"所以新线路不会被发送。

无论如何,解决方案是不要从客户端删除新行。不知何故,服务器正在正确读取所有内容,新行和所有内容。希望能有所帮助。