[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