Concetti Chiave

  • Il programma per inviare dati utilizza una named pipe per scrivere informazioni inviate dall'utente.
  • Il programma per ricevere dati legge le informazioni dalla named pipe e le visualizza a schermo.
  • Entrambi i programmi utilizzano un ciclo infinito per continuare a inviare o ricevere dati fino a quando non vengono interrotti.
  • Viene utilizzato un buffer temporaneo di dimensione definita (DIM_MAX) per gestire i dati scambiati.
  • In caso di errore nell'apertura della pipe, entrambi i programmi restituiscono un valore di errore e terminano l'esecuzione.

Programma per inviare dati

PGM PER INVIARE DATI

#include

#include

#include

#include

#include

#include

#define DIM_MAX 40

int main(int argc, char** argv) {

char temp[DIM_MAX];

int fd;

//Apertura named pipe

fd = open("fileFIFO", O_WRONLY);

if (fd==-1)

return 1;

while (1) {

printf("Cosa spedire: ");

fgets(temp, DIM_MAX, stdin);

//Scrittura su pipe

write(fd, temp, DIM_MAX);

}

//close(pipe) se non ci fosse loop sopra

}

Programma per ricevere dati

PGM PRE RICEVERE DATI

#include

#include

#include

#include

#include

#include

#define DIM_MAX 40

int main(int argc, char** argv) {

char temp[DIM_MAX];

int fd;

//Apertura named pipe

fd = open("fileFIFO", O_RDONLY|O_ASYNC);

if (fd==-1)

return 1;

while (1) {

printf ("In attesa...\n");

int retVal=read(fd, temp, DIM_MAX);

printf ("Ricevuto: %s - retVal=%d\n",temp,retVal);

}

//close(pipe) se non ci fosse loop sopra

}

Domande da interrogazione

  1. Qual è la funzione principale del programma per inviare dati?
  2. Il programma per inviare dati utilizza una named pipe per scrivere messaggi inseriti dall'utente, permettendo la comunicazione tra processi.

  3. Come viene gestita l'apertura della named pipe nel programma per ricevere dati?
  4. Nel programma per ricevere dati, la named pipe viene aperta in modalità lettura con l'opzione O_RDONLY e O_ASYNC, garantendo che il programma rimanga in attesa di nuovi dati.

  5. Cosa succede se l'apertura della named pipe fallisce in entrambi i programmi?
  6. Se l'apertura della named pipe fallisce, entrambi i programmi restituiscono un valore di errore (1) e terminano l'esecuzione.

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community