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()
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
dup2(1,#je sais pas quoi mettre en deuxime descripteur);
et enfin la redirection:
#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:
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?
Partager