Esercizio
1. (pipe senza nome)
Realizzare
una coppia di processi (padre e figlio) che comunicano attraverso due pipe
senza nome (p1 e p2).
Il
figlio utilizza la pipe p1 per richiedere al padre l'elevamento al quadrato di
una sequenza di N numeri (in formato double).
Il
padre, appena ricevuto una double x su p1, risponde su p2 con x*x.
La
sequenza di messaggi scambiati dai due processi termina quando il figlio chiude
la pipe p1.
Hint: per gestire una variable double msg
utilizzate read/write(fd,&msg,sizeof(
double ))
Esercizio
2. (pipe con nome)
Realizzare
un processo server ed un processo client. I due processi intergiscono
utilizzando due pipe con nome: clientserver e clientp.
Il
server legge messaggi sulla pipe clientserver.
Ogni
messaggio è costituito da un double.
Per
ogni messaggio ricevuto x, il server calcola x*x e invia il risultato su clientp.
La
sequenza di termina quando il figlio chiude la pipe clientserver.
Le
pipe devono essere rimosse dal file system alla terminazione dei due processi.
Hint: Usare unlink() per rimuovere le pipe.