Bonsoir!

Je suis actuellement en train de réviser l'UNIX en vue d'un examen.

J'essaye de fairre un exercice mais je pense que je pars dans la mauvaise direction:
Comment écrire un programme qui redirige la sortie standard vers un fichier et effectue un ls vers ce fichier?

je pense qu'il faut faire d'abord open()

Code : Sélectionner tout - Visualiser dans une fenêtre à part
int f = open(fichier, O_RDWR, O_CREAT);
puis un dup2(), car dup2() duplique le premier descripteur et en un deuxième correspondant au second argument.

donc

Code : Sélectionner tout - Visualiser dans une fenêtre à part
dup2(1,#je sais pas quoi mettre en deuxime descripteur);
et enfin la redirection:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
#je sais pas quoi mettre en deuxime descripteur >  fichier;
ensuite pour executer un ls on va faire exec qui remplace le processis en cours par un nouveau précisé dans les arguments.


Donc finalement:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
int f = open(fichier, O_RDWR, O_CREAT);
dup2(1,#je sais pas quoi mettre en deuxime descripteur#);
#je sais pas quoi mettre en deuxime descripteur# >  fichier;
execlp("ls",NULL);
Mais faire une telle construction par brique me parait assez rudimentaire... Pouvez vous me corriger? Me dire ou j'ai faux et me guider pour m'améliorer?