<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.2800.1400" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT face=Arial size=2>Salve a tutti,</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>sono un newbee della programmazione di Linux e
principalmente ho usato il manuale di Simone Piccardi per muovere i primi
passi.</FONT></DIV>
<DIV><FONT face=Arial size=2>( Colgo l'occasione x ringraziarlo del suo
manuale).</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Sto utilizzando le code x far comunicare due
differenti processi. Definisco la struttura dei messagggi della coda:
</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>struct msgbuf
{
//struttura dei Messaggi della coda<BR> long mtype;<BR> int
userdata;<BR> };</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Ecco in sintesi il mio programma:</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>void main()</FONT></DIV>
<DIV><FONT face=Arial size=2>{</FONT></DIV>
<DIV><FONT face=Arial size=2> struct msgbuf msg;</FONT></DIV>
<DIV><FONT face=Arial size=2> ket_t key;</FONT></DIV>
<DIV><FONT face=Arial size=2> ..</FONT></DIV>
<DIV><FONT face=Arial size=2> </FONT></DIV>
<DIV><FONT face=Arial size=2> dichiaro variabili</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2> ..</FONT></DIV>
<DIV><FONT face=Arial size=2> key = ftok(".",'m');<BR>
printf("key : %d ", key);<BR> if( (qid =creacoda(key)) == -1)
printf(" Errore creazione Coda Messsaggi");<BR>
msg.mtype=1;</FONT></DIV>
<DIV><FONT face=Arial size=2>
msg.userdata=1; </FONT></DIV>
<DIV><FONT face=Arial size=2> if (inviamsg(qid,&msg) == -1)
{<BR>
perror("send_message");<BR>
exit(1);<BR> }<BR> </FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>}</FONT></DIV><FONT face=Arial size=2>
<DIV><BR>int creacoda(key_t keyval)<BR>{<BR> int qid;<BR>if(( msgget(
keyval,IPC_CREAT | 0660)) == -1)<BR>
{<BR>
return(-1);<BR> }<BR> printf("Creata coda con
qid=%d",qid);<BR> return(qid);<BR>}</DIV>
<DIV> </DIV>
<DIV>int inviamsg(int qid, struct msgbuf *msg )<BR>{<BR>int
result,lenght;<BR>lenght = sizeof(struct msgbuf) - sizeof (long);<BR></DIV>
<DIV>if ((result= msgsnd(qid, msg, lenght, 0)) == -1
) </DIV>
<DIV> {<BR>
return(-1);<BR> }<BR>return(result);<BR>}<BR></DIV>
<DIV> </DIV>
<DIV>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?</DIV>
<DIV> </DIV>
<DIV>Grazie in anticipo </DIV>
<DIV> </DIV>
<DIV>Francesco</DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV><BR>---<BR>Outgoing mail is certified Virus Free.<BR>Checked by AVG
anti-virus system (<A
href="http://www.grisoft.com">http://www.grisoft.com</A>).<BR>Version: 6.0.732 /
Virus Database: 486 - Release Date: 29/07/2004</DIV></FONT></BODY></HTML>