POSIX mq_receive не получает правильное значение - PullRequest
0 голосов
/ 30 ноября 2018

Я программирую отправку и получение точек между процессами.

Я объявил некоторые структуры, подобные этой,

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

Я вставил x, y с Point struct (и p.count++;) в каждый дочерний процесс;Я хочу отправить его другим дочерним процессам, но он не работает.

Я пытался вот так (просто показывает, мой код более сложный)

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

и я проверилсколько раз он отправляет в каждую очередь сообщений и сколько раз сообщения принимаются.Я также проверил, что это те же счетчики.

Но после получения сообщения в другом дочернем процессе я проверяю значение счетчика в структуре, и оно равно 0.

Как я могу получитьсообщение другому процессу правильно?Это ошибка типа данных при получении?

...