Concetti Chiave
- Il programma di invio gestisce l'invio di messaggi di testo tramite code IPC in C.
- Utilizza strutture dati per rappresentare i messaggi, con un tipo e un testo di dimensione massima definita.
- Il programma invia due domande di informatica e sistemi utilizzando la funzione msgsnd.
- Il programma di ricezione legge i messaggi dalla coda specificando il tipo con msgrcv e gestisce gli errori con un messaggio di avviso.
- Entrambi i programmi utilizzano costanti predefinite per identificare le domande e la coda di messaggi.
PGM PER L'INVIO
Programma di invio messaggi
#include
#include
#define DIM_MAX 32
#define ID_CODA 0
#define DOMANDA_DI_INFORMATICA 1
#define DOMANDA_DI_SISTEMI 2
typedef struct {
long type;
char testo[DIM_MAX];
} message;
int main() {
message msg;
msg.type = DOMANDA_DI_INFORMATICA;
strcpy(msg.testo, "Cosa significa costruttore?");
msgsnd(ID_CODA, (void *) &msg, sizeof(msg.testo), IPC_NOWAIT);
msg.type = DOMANDA_DI_SISTEMI;
strcpy(msg.testo, "Cosa significa fork?");
msgsnd(ID_CODA, (void *) &msg, sizeof(msg.testo), IPC_NOWAIT);
return 0;
}
PGM PER LA RICEZIONE
Programma di ricezione messaggi
#include
#include
#define DIM_MAX 32
#define ID_CODA 0
#define DOMANDA_DI_INFORMATICA 1
#define DOMANDA_DI_SISTEMI 2
typedef struct {
long type;
char testo[DIM_MAX];
} message;
int main() {
message msg;
int msgtype=DOMANDA_DI_INFORMATICA;
//int msgtype=DOMANDA_DI_SISTEMI;
int retval=msgrcv(ID_CODA, (void *) &msg, sizeof(msg.testo), msgtype, MSG_NOERROR | IPC_NOWAIT);
if (retval==-1)
printf ("Nessun messaggio disponibile\n");
else
printf("%s\n%d",msg.testo,retval);
return 0;
}
Domande da interrogazione
- Qual è la funzione principale del programma di invio messaggi?
- Come viene gestita la ricezione dei messaggi nel programma di ricezione?
- Quali sono le costanti definite nel codice e il loro scopo?
Il programma di invio messaggi ha il compito di inviare domande di informatica e sistemi tramite una coda di messaggi, utilizzando la funzione `msgsnd` per inviare i messaggi con un tipo specifico.
Nel programma di ricezione, i messaggi vengono ricevuti tramite la funzione `msgrcv`, che cerca un messaggio di un tipo specifico e, se disponibile, lo stampa; in caso contrario, restituisce un messaggio di errore.
Le costanti definite nel codice, come `DIM_MAX`, `ID_CODA`, `DOMANDA_DI_INFORMATICA` e `DOMANDA_DI_SISTEMI`, servono a stabilire dimensioni massime, identificatori di coda e tipi di messaggi per facilitare la gestione e l'invio/ricezione dei messaggi.