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.