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.