Ошибка во время связи в очереди сообщений
Я сделал очередь сообщений, но когда помощник отправил сообщение своему клиенту, клиент получил неправильный номер: -1081388352. Это для каждого номера, который я отправляю. Там нет ошибки во время msgget и даже durign msgcrv или msgsnd. Код для отправки:
key_t chiave_ac = ftok("prenotazione.c", 'M');
if(chiave_ac == -1){
perror("ftock");
exit(EXIT_FAILURE);
}
int coda_ac = msgget(chiave_ac, IPC_CREAT | 0642);
if(coda_ac == -1){
perror("msgget");
exit(EXIT_FAILURE);
}
if (msgsnd(coda_ac, &m, sizeof(messaggio)-sizeof(long), 0) == -1) {
perror("msgsnd");
exit(EXIT_FAILURE);
}
Recivied:
key_t chiave_ac = ftok("prenotazione.c", 'M');
if(chiave_ac == -1){
printf("Errore nel generare la chiaveAC \n");
perror("ftok");
exit(1);
}
int id_ac = msgget(chiave_ac, 0);
if (id_ac == -1){
perror("msgget ac");
exit(EXIT_FAILURE);
}
if( msgrcv(id_ac, &risp, sizeof(messaggio)-sizeof(long), getpid(), 0) == -1){
printf("errore ricezione \n");
fflush(stdout);
}
Что я делаю не так? В каком-то флаге есть ошибка?
[добавлено из комментария:]
typedef struct
{
long type;
int pid;
scelta tipo;
int aula;
int giorno;
bool finito;
} messaggio;