Next: close Up: Appels système du Système Previous: lseek

dup et dup2

Les appels dup et dup2 permettent de dupliquer des entrées de la table des descripteurs du processus.

int  descripteur2 = dup(int descripteur1);
  1. vérification que descripteur est le numéro d'une entrée non nulle.
  2. recopie dans la première entrée libre du tableau des descripteurs l'entrée correspondant à descripteur1.
  3. le compteur de descripteurs de l'entrée associée à descripteur1 dans la table des ouvertures de fichiers est incrémenté.
  4. renvoi de l'indice dans la table des descripteurs de l'entrée nouvellement allouée.

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.



Dominique REVUZ
Mon Feb 2 12:10:31 MET 1998
Une Bug Un mail Merci