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

  1. Qual è la funzione principale del programma di invio messaggi?
  2. 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.

  3. Come viene gestita la ricezione dei messaggi nel programma di ricezione?
  4. 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.

  5. Quali sono le costanti definite nel codice e il loro scopo?
  6. 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.

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community