Concetti Chiave
- Il programma di invio utilizza la struttura dati 'message' per inviare messaggi tramite code di messaggi di sistema, specificando il tipo e il testo.
- Due messaggi vengono inviati: uno per una domanda di informatica e l'altro per una domanda di sistemi, utilizzando 'msgsnd'.
- Il programma di ricezione utilizza 'msgrcv' per leggere messaggi dalla coda, filtrando in base al tipo di messaggio richiesto.
- Se non ci sono messaggi disponibili, il programma di ricezione restituisce un messaggio di errore; altrimenti, stampa il contenuto del messaggio e il valore di ritorno.
- Le costanti 'DOMANDA_DI_INFORMATICA' e 'DOMANDA_DI_SISTEMI' sono usate per categorizzare i messaggi inviati e ricevuti.
PGM PER L'INVIO
#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
#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;
}