opiu
01-09-2004, 13:44
[C] IPC con code di messaggi
Ciao, per un esercizio per l'università devo far comunicare vari processi attraverso code di messaggi, utilizzo le seguenti funzioni per inviare e ricevere un messaggio:
int msgsnd(int msqid, const void *msgp, size_t msgsz,
int msgflg);
int msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp,
int msgflg);
e questa struttura dati per il messaggio
struct mymsg {
long mtype; /* message type */
char mtext[MSGSZ]; /* message text of length MSGSZ */
}
Tutto come da manuale insomma. Il mio problema è che inizialmente il messaggio è costituito da un solo carattere, poi però la dimensione cresce non linearmente praticamente moltiplicata sempre per sei. Avrò quindi con pochi cicli msg costutuiti da stringhe da 1,6,36,216,1296 ecc caratteri... e una struttura come char mtext[MSGZ] non è adatta giusto? E poi che valore dovrebbe assumere MSGZ? Nell esercizio non è specificato quante iterazioni devo compiere, credo il numero sufficiente per dimostrare una corretta comunicazione. Come fare considerando che la funzione msgrcv deve conoscere la dimensione del messaggio?
Grazie
Ciao, per un esercizio per l'università devo far comunicare vari processi attraverso code di messaggi, utilizzo le seguenti funzioni per inviare e ricevere un messaggio:
int msgsnd(int msqid, const void *msgp, size_t msgsz,
int msgflg);
int msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp,
int msgflg);
e questa struttura dati per il messaggio
struct mymsg {
long mtype; /* message type */
char mtext[MSGSZ]; /* message text of length MSGSZ */
}
Tutto come da manuale insomma. Il mio problema è che inizialmente il messaggio è costituito da un solo carattere, poi però la dimensione cresce non linearmente praticamente moltiplicata sempre per sei. Avrò quindi con pochi cicli msg costutuiti da stringhe da 1,6,36,216,1296 ecc caratteri... e una struttura come char mtext[MSGZ] non è adatta giusto? E poi che valore dovrebbe assumere MSGZ? Nell esercizio non è specificato quante iterazioni devo compiere, credo il numero sufficiente per dimostrare una corretta comunicazione. Come fare considerando che la funzione msgrcv deve conoscere la dimensione del messaggio?
Grazie