Ошибка во время связи в очереди сообщений

Я сделал очередь сообщений, но когда помощник отправил сообщение своему клиенту, клиент получил неправильный номер: -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;

0 ответов

Другие вопросы по тегам