Salve,
sto imparando a usare i messaggi per la comunicazione tra processi ma mi son impallata immediatamente. Perché non mi funziona la msgsnd?
Ecco il codice
#include <sys/types.h>
#include <sys/msg.h>
#include <sys/ipc.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
extern int errno;
typedef struct {
long int tipo;
char testo[15];
} posta;
int main() {
posta message;
key_t K=12;
int msqid=msgget(K, IPC_CREAT|0666);
message.tipo=1;
strcpy(message.testo, "\nSono io\n");
int taglia=strlen(message.testo);
int rit=msgsnd(K, &message, taglia, 0);
printf("\nIl valore di ritorno di msgsnd del messaggio %s di taglia %d a %d è %d\n\n",message.testo, taglia, msqid, rit);
perror("Errore in msgsnd");
return 0;
}
Da terminale mi stampa
Il valore di ritorno di msgsnd del messaggio
Sono io
di taglia 9 a 0 è -1
Errore in msgsnd: Invalid argument
Il tipo di messaggio è non negativo, la msgget va, non c'è buffer overflow, non capisco cosa non vada. Programmo su Ubuntu con gcc.