[C - C++] Changement répertoire console

Résolu
Bonjour,

Voilà je suis sous la Mandrake 9.2 et je programme en C++, mon problème est simple à comprendre :

Dans mon programme, je dois faire un changement de répertoire dans la console. J'ai essayé le : system("cd toto"); mais ca ne marche pas, le répertoire de la console reste inchangé.

Si quelqu'un a la solution ou même une idée ca me sortirait d'une bonne galère.

Merci d'avance à tous...

2 réponses

  1. Webmaster
    Dans quelle console souhaites-tu faire ce changement de répertoire ?

    C++ fera le changement de répertoire dans son propre environnement d'exécution.
    Par ailleurs un chdir(".."); serait plus approprié !

    1. Je ne connaissait tout simplement pas le chdir(" "), je vais essayer ca demain.

      En fait mon problème c'est que ca :

      system("cd apache");
      system("configure");

      Ca ne marche pas, il dit que la commande "configure" n'existe pas car le changement de répertoire n'a pas été pris en compte, ou plus pris en compte.

      Pour l'instant j'ai bidouillé un truc pas trés propre qui est :

      system("source apache_conf");

      avec un script nommé "apache_conf" contenant :

      cd apache
      configure

      Ca marche bien mais c'est pas propre donc demain j'essaye le chdir(" "); voir si je peux en faire quelque chose.

      En tout cas merci de ta réponse, et je post les résultats demain...
    2. @TiboSalut,

      Je pense que ton ton problème vient du fait que si ton prog est dans :
      /home/nimporte

      system("cd apache") ne fonctionne que si et seulement si :
      /home/nimporte/apache existe !

      Il faudrait system("/repertoirecomplet/apache")

      A+
    3. @lolotuxLe répertoire apache existe bien et ce pour 3 raisons :

      1 - C'est la première chose dont je me soit assurée.

      2 - Si le répertoire n'existait pas la commande system("cd apache"); me renverrait quelque chose comme no such file or directory.

      3 - Enfin le programme et le script étant dans le même répertoire, si le script marche c'est que le répertoire existe bien.

      Je pense plutôt que c'est un problème d'environnement d'exécution, mais on m'a donné quelques pistes a essayer, comme par exemple la commande : chdir(" ");

      Voilà :)
    4. @lolotuxJ'ai même oublié la raison la plus importante pour laquelle le répertoire apache existe bien c'est que tout simplement c'est mon programme qui le crée :)
  2. Ben merci à Jeff, il m'a juste fallut remplacer le system("cd apache"); par un chdir("apache"); et tout fonctionne à merveille.

    Comme quoi il suffit qu'une commande vous manque pour que Linux soit dépeuplé.

    Comprendra qui voudra :)
    1. Webmaster
      ;-)