[Tech] Uso delle code in System V
Francesco Chiarelli
chiarelli_francesco@hotmail.com
Ven 30 Lug 2004 18:37:46 CEST
Salve a tutti,
sono un newbee della programmazione di Linux e principalmente ho usato il manuale di Simone Piccardi per muovere i primi passi.
( Colgo l'occasione x ringraziarlo del suo manuale).
Sto utilizzando le code x far comunicare due differenti processi. Definisco la struttura dei messagggi della coda:
struct msgbuf { //struttura dei Messaggi della coda
long mtype;
int userdata;
};
Ecco in sintesi il mio programma:
void main()
{
struct msgbuf msg;
ket_t key;
..
dichiaro variabili
..
key = ftok(".",'m');
printf("key : %d ", key);
if( (qid =creacoda(key)) == -1) printf(" Errore creazione Coda Messsaggi");
msg.mtype=1;
msg.userdata=1;
if (inviamsg(qid,&msg) == -1) {
perror("send_message");
exit(1);
}
}
int creacoda(key_t keyval)
{
int qid;
if(( msgget( keyval,IPC_CREAT | 0660)) == -1)
{
return(-1);
}
printf("Creata coda con qid=%d",qid);
return(qid);
}
int inviamsg(int qid, struct msgbuf *msg )
{
int result,lenght;
lenght = sizeof(struct msgbuf) - sizeof (long);
if ((result= msgsnd(qid, msg, lenght, 0)) == -1 )
{
return(-1);
}
return(result);
}
La funzione di "msgsnd " ritorna con l'errore ": invalid argument". L'errore EINVAL viene generato per un valore msgid invalido (ma non la funzione msgget ritorna un valore positivo), se viene passato un msg con campo mtype non positivo ( è impostato a 1), oppure msgsz > MSGMAX (8192). Qualcuno a una idea sulla possibile causa dell'errore?
Grazie in anticipo
Francesco
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.732 / Virus Database: 486 - Release Date: 29/07/2004
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.linux.it/pipermail/flug-tech/attachments/20040730/5611ba83/attachment.htm>
Maggiori informazioni sulla lista
flug-tech