nikpez
Ominide
1 min. di lettura
Vota 4 / 5

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.
Message box

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;
}

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community