POSIX mq_receive没有收到正确的值

时间:2018-11-30 18:20:00

标签: c linux posix ipc message-queue

我正在编程进程之间的发送和接收点。

我声明了一些这样的结构,

typedef struct Point
{  
    int x[100];
    int y[100];
    int count;
}Point;

然后我声明了消息队列和Point结构的数组

mqd_t mq[10];
Point p[10];

然后我分叉以创建10个子进程

for(i=0; i<10; i++)
{
    pid[i] = fork();
    if(pid[i] == 0)
        break;
}

我在每个子进程中插入带有Point结构(和p.count++;)的x,y;我想将其发送到另一个子进程,但是它不起作用。

我这样尝试过(只是简单地向您展示,我的代码更复杂)

Point received_msg[10];
mq_send(mq[i], (char *)&p, MSG_SIZE, 0)
mq_receive(mq[i], (char *)&received_msg, MSG_SIZE, NULL)

,我检查了它发送到每个消息队列的次数,以及接收到消息的次数。 我还检查了这些计数是否相同。

但是在另一个子进程中收到消息后,我检查了struct中count的值,它仅为0。

如何正确地将消息接收到另一个进程?收到时是数据类型错误吗?

0 个答案:

没有答案