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
- Qual è la funzione principale del programma per inviare dati?
- Come viene gestita l'apertura della named pipe nel programma per ricevere dati?
- Cosa succede se l'apertura della named pipe fallisce in entrambi i programmi?
Il programma per inviare dati utilizza una named pipe per scrivere messaggi inseriti dall'utente, permettendo la comunicazione tra processi.
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.
Se l'apertura della named pipe fallisce, entrambi i programmi restituiscono un valore di errore (1) e terminano l'esecuzione.