RISOLTO - [C] Invalid argument per msgsnd

di il
1 risposte

RISOLTO - [C] Invalid argument per msgsnd

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.

1 Risposte

Devi accedere o registrarti per scrivere nel forum
1 risposte