[resulu]Changer de répertoire courant sans shell sur Gnu/Linux.

Changer de répertoire courant sans shell sur Gnu/Linux. [resulu] - Divers - Programmation

Marsh Posté le 08-10-2015 à 13:29:28    

Bonjour,
 
Je voudrais savoir quel sont les conditions/prérequis pour changer de répertoire courant en dehors d'un quelconque shell.
 
Pour pourvoir en suite développer ma commande "change_directory".
 
Merci pour votre intérêt.

Message cité 1 fois
Message édité par Profil supprimé le 09-10-2015 à 06:26:04
Reply

Marsh Posté le 08-10-2015 à 13:29:28   

Reply

Marsh Posté le 08-10-2015 à 16:39:04    


Tu veux faire une commande qui change le répertoire courant sur un système Unix ? Ça ne peut pas fonctionner. Tu ne peux changer ce répertoire que dans le processus courant, qui pourra être hérité par ses descendants. Dans un shell, la commande "cd" est interne au processus, il n'y a pas de commande externe.

Reply

Marsh Posté le 08-10-2015 à 17:33:39    

J'ai lu l'inverse et j'ai confiance en ma source.
 
C'est a dire qu'on ne peut changer le répertoire courant du processus courant.
par contre je pense qu'au moment de l'héritage il est possible de changer de répertoire courant dans le nouveau processus.
Mais je m'en moque en fait je vais créer mon evironnement, je voudrais le faire proprement.
 
Genre int main ( **char envp[]) {}; mais à y penser je suis dans les nuages.
J'arrive pas à modéliser cette fonction.
 
Admettons, je fait un fork() j'hérite du répertoire courant comment ge change ?
 
ex je suis dans /hommes/sens/devel je lance mon premier processus, je veux aller dans /hommes/.
je fais fork(),  et y a des argument et des option à fork peu-être..
Je vais regarder.
Merci quand même pour ta réponse.

Reply

Marsh Posté le 09-10-2015 à 19:03:50    

Oui, tu peux changer le répertoire courant avec l'appel système chdir(), répertoire courant qui sera ensuite hérité par tous les processus fils. Cela dit, depuis un processus fils, tu ne pourras pas changer le répertoire du processus parent: c'est pour ça que dans un shell, la commande "cd" doit être interne.

Reply

Marsh Posté le 09-10-2015 à 19:54:33    

tpierron a écrit :

Oui, tu peux changer le répertoire courant avec l'appel système chdir(), répertoire courant qui sera ensuite hérité par tous les processus fils. Cela dit, depuis un processus fils, tu ne pourras pas changer le répertoire du processus parent: c'est pour ça que dans un shell, la commande "cd" doit être interne.


 
Ca veut dire quoi au juste ?

Reply

Marsh Posté le 09-10-2015 à 21:52:34    


Bah quand tu dis :

Citation :

Pour pourvoir en suite développer ma commande "change_directory".


J'interprête que tu veuilles faire une commande (ie: exécutable) qui fait le boulot de la commande "cd" d'un shell. Et ça, ce n'est pas possible.

Reply

Marsh Posté le 09-10-2015 à 23:19:04    

Je viens de le faire, je suis pas magicien.

Reply

Marsh Posté le 09-10-2015 à 23:34:22    

Ah mais en fait j'ai pas écrit une commande "cd" j'ai écris un environnement dans lequel j'ai une builtin command cd comme dans un shell.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed