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 :
Tout d'abord je ne suis pas sûr que ce code soit juste, donc n'hésitez pas à le corriger.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); }
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