Le funzioni dup() e dup2() servono a duplicare descrittori
di file:
#include<unistd.h>
int dup(int oldfd);
int dup2(int oldfd, int newfd);
La dup() prende il primo descrittore libero, ci copia dentro il
descrittore oldfd e lo ritorna. La funzione dup2() copia
il descrittore oldfd sul descrittore newfd: se newfd
era un descrittore aperto, lo chiude prima. Entrambe le funzioni
ritornano il valore del descrittore in cui oldfd è stato
copiato: nel caso della dup, viene ritornato il valore del
nuovo descrittore; nel caso della dup2() viene ritornato il
valore di newfd.
Le funzioni dup() vengono utilizzate principalmente per
redirigere lo stdout e lo stdin di un processo su un file. Vedremo nel
prossimo capitolo come la shell implementa le operazioni di
re-direzione dell'input e dell'output di un processo tramite queste
due funzioni.