next up previous
Next: Passaggio di dati a Up: Pipes Previous: Pipes

Sincronizzazione tra processi tramite pipe

Il seguente programma serve per dimostrare come è possibile sincronizzare due processi per mezzo delle pipe.

sincpipe.c

Come si può vedere, non è importante COSA viene passato sulla pipe, ma il fatto che QUALCHE dato viene passato. Sia il figlio che il padre si aspettano un dato qualsiasi, non un dato in particolare. Vedremo prossimamente come fare tutto ciò con i semafori.

Esercizio: Nel programma di esempio, il padre fa dieci cicli e poi ``uccide'' il figlio. Cosa succede se invece chiude semplicemente la pipe in scrittura? Provare per credere...

Modificare il programma in modo che anche se il padre chiude la pipe pf in scrittura, il figlio esca stampando ``fine''.

Esercizio: Modificare il programma di esempio in modo che il padre, dopo aver terminato il ciclo for, chiuda la pipe fp in lettura e mandi comunque il dato al figlio tramite la pipe pf. Cosa succede al figlio?



2000-11-14