Les appels dup et dup2 permettent de dupliquer des entrées de la table des  descripteurs du processus.
 
 int  descripteur2 = dup(int descripteur1);
 
 
Redirection temporaire de la sortie standard dans un fichier:
tempout = open("sortie_temporaire",1);
oldout = dup(1);
close(1);
newout = dup(tempout); /* renvoie 1  */
write(1,"xxxx",4); /* ecriture dans le fichier temporaire */
close(tempout);
close(1);
newout = dup(oldout);
close(oldout); 
 
Il est aussi possible de choisir le descripteur cible avec
 int ok = dup2(int source, int destination);
 
 Recopie du descripteur source dans l'entrée destination de la
table des descripteurs.
Si destination désigne le descripteur d'un fichier ouvert,
celui-ci est préalablement fermé avant duplication. Si destination n'est pas un
numéro de descripteur valide, il y a une erreur, retour -1.