Esercizio 5.5
Scrivere un programma in cui, dopo aver aperto due pipe, un processo
faccia la fork di un figlio. Da questo momento in poi, ognuno dei due
processi, stampa un messaggio a video, manda un dato su una pipe e si
mette in atesa sull'altra. Se il programma funziona correttamente, i
messaggi del padre e del figlio si devono altrnare sul video.
Esercizio 5.6
Scrivere un programma con processi concorrenti e pipe, fatto
nel seguente modo. Il processo padre apre un pipe, forka un figlio e
poi si mette in attesa di leggere un intero sulla pipe; quando lo ha
ricevuto, lo stampa a video. Ognuno dei figli, tranne l'ultimo,
effettua la stessa procedura: apre una pipe, forka un figlio, e si
mette in attesa di leggere un intero dalla pipe; non appena riceve
l'intero dalla pipe, lo riscrive sulla pipe del padre. L'ultimo
figlio, l'-esimo, legge il proprio pid e lo scrive sulla pipe del
proprio padre.
Esercizio 5.7
Scrivere un programma che realizzi una struttura circolare con
processi e pipe. Numerando i processi da a , il processo
i-esimo () legge dalla pipe e scrive sulla pipe
i. Il processo legge dalla pipe e scrive sulla pipe
1. Ognuno dei processi legge e scrive degli interi dalle pipe: i
processi dispari leggono un intero, lo stampano a video, gli sommano
il proprio indice e lo scrivono sulla pipe di uscita. I processi
pari leggono un intero, lo stampano a video, gli sottraggono il
proprio indice e lo inviano sulla pipe di uscita.
Esercizio 5.8
Scrivere un programma che stampi a video il contenuto della directory
corrente, ottenuto eseguendo il comando di shell ls.
Esercizio 5.9
Scrivere un programma che legga due numeri interi dallo stdin e ne
stampi a video la somma.
Scrivere un altro programma che manda in esecuzione il programma
precedente, passandogli due numeri sullo standard input (utilizzare la
primitiva dup2).