***************************************************************************
UTILIZZO DELLE SYSTEM CALL DI LINUX - GESTIONE DELLE IPC
***************************************************************************

(ex1)

Il programma pipe_father_to_child.c crea una pipe e un figlio.
Il padre scrive nella pipe la frase "in bocca alla pipe". Il figlio
legge la frase dalla pipe e la stampa a video.
Modificare il programma in modo che il figlio utilizzi la exec per
caricare un programma C scritto in un altro file (pread.c) che esegua la
lettura della pipe e la scrittura su stdout di quanto letto.
Creare anche il programma pread.c

Suggerimento:
Affinche' il programma pread.c possa leggere dalla pipe quando viene mandato
in esecuzione dalla exec, e' necessario passare il descrittore della pipe
a pread.c come parametro. Altrimenti pread.c non puo' sapere su quale pipe
deve leggere!
Gli argomenti passati come parametro a pread.c possono essere solo stringhe
(ovvero gli elementi del vettore argv dichiarato come argomento del main),
mentre il file descriptor e' un numero. Pertanto prima di passare il descrittore
della pipe alla exec, e' necessario convertirlo da numero a stringa tramite la funzione
sprintf (vedere man sprintf). Quindi quando ptread vorra' usare il descrittore
per leggere dalla pipe dovra' converitirlo nuovamente da stringa a numero
tramite la funziona atoi (vedere man atoi).

********************************************************************************

(ex2)

Modificare la minishell creata la settimana scorsa (ex5_fork_exec/ex4)
in modo che consenta l'esecuzione di pipe di comandi.
La shell dovr quindi essere in grado di eseguire linee di comando del tipo:
<comando_1> | <comando_2>.

Usare come scheletro per la soluzione il programma myshell.c contenuto nella
cartella ex4. La parte da completare e' solamente quella relativa alla funzione
execute. Il resto e' invariato rispetto a quanto si trova in ex5_fork_exec/ex4.


********************************************************************************

(ex3)

Il programma mysort.c contenuto della directory ex5/ contiene 5 errori sintattici
e 5 errori semantici. Correggerli e fare in modo che si comporti come
mysort_corretto.x

Il programma deve eseguire l'ordinamento alfabetico dei valori
contenuti in un file fornito come argomento alla linea di comando.
Il processo padre dovr leggere i dati da file e
scriverli su una pipe al processo figlio. Quest'ultimo deve eseguire il
comando linux "sort" per ordinare i dati e ritornare i dati ordinati al
padre usando un'altra pipe (diversa da quella usata precedentemente!).

Per provare il programma mysort_corretto.x lanciare il comando:
mysort_corretto.x dati.txt

Il file dati.txt contiene dei dati non ordinati che vengono ordinati
alfabeticamente da mysort_corretto.x


********************************************************************************

(ex4)

Realizzare il programma del punto (5) usando fifo al posto di pipe.

(ex5)

Modificare l'esercizio 1 usando le FIFO al posto delle PIPE
