Я программирую отправку и получение точек между процессами.
Я объявил некоторые структуры, подобные этой,
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.
Как я могу получитьсообщение другому процессу правильно?Это ошибка типа данных при получении?