J'ai récupéré le code d'un mini-shell que quelqu'un a fait et je me pose des questions sur la façon d'avoir programmé la redirection de la sortie standard :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
else if(strcmp(arg2,">")==0 && arg3 != '\0')
{
int fichier = open(arg3,O_RDWR|O_CREAT, 0600);
pid = fork();
if(pid==0)
{
close(1);
dup(fichier);
close(fichier);
execlp(arg1,arg1,NULL);
printf("Commande inexistante : %s\n",arg1);
exit(-1);
} |
Tout d'abord je ne suis pas sûr que ce code soit juste, donc n'hésitez pas à le corriger.
Je ne comprend pas bien pourquoi il y a close(fichier). Pour moi, si l'on ferme ce descripteur, c'est un peu comme si l'on faisait un free c'est à dire que l'on ne pourra plus accéder à ce descripteur. Et si l'on ne peut plus y accéder, je vois mal comment on peut y écrire des données!
Et sinon, j'ai changé les permission dans la primitive open et j'ai constaté que ça ne changeait rien que je mettre 0777 ou 0000! A quoi est-ce dû?
Partager