IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

retrouver le "path" de l'exe dans un code c++


Sujet :

C++

  1. #1
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut retrouver le "path" de l'exe dans un code c++
    je cherche une methode c++ pour recupere le "path" de l'application pendant son execution
    si quelqu'un peu m'aider ou me donné deux trois methode a regardé
    ps : j'aimerai trouve une method portable (qui marche aussi sur linux ou sgi)

  2. #2
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    GetCurrentDirectory();

    [edit] arf, je n'avais pas vu que tu souhaitais une fonction portable, je ne crois pas qu'elle le soit [/edit]
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  3. #3
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    c'est deja super merci.
    mais elle me donne bien le path de l'exe ou le path de la ou je l'execute??
    comme je veut recuperer le path de l'exe.
    merci

  4. #4
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Mongaulois
    c'est deja super merci.
    mais elle me donne bien le path de l'exe ou le path de la ou je l'execute??
    comme je veut recuperer le path de l'exe.
    merci
    Euh... je ne vois pas la différence ^^
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  5. #5
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    exemple
    l'executable : c: /blabla/bla/essai.exe

    et je le lance du repertoire c:/azerty/uiop/

    ben je veut recuperer "c: /blabla/bla/" qui est le repertoire de l'exe et non le repertoire d'ou je le lance

  6. #6
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 750
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 750
    Points : 10 669
    Points
    10 669
    Billets dans le blog
    3
    Par défaut
    Faut te tourner vers une solution spécifique à chaque OS. Sous Windows, c'est GetModuleFileName( NULL ).
    Y'a argv[ 0 ] aussi, mais c'est pas fiable.

  7. #7
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    ok merci.
    argv[0] donne pas le nom de l'exe??
    sinon, tu aurait une idée pour linux??
    merci je vais essayer

  8. #8
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 750
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 750
    Points : 10 669
    Points
    10 669
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par Mongaulois
    argv[0] donne pas le nom de l'exe??
    je crois que oui (encore que y'a une histoire que c'est fonction de l'OS je crois), mais pas forcément son path.

  9. #9
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut Re: retrouver le "path" de l'exe dans un code c++
    Citation Envoyé par Mongaulois
    je cherche une methode c++ pour recupere le "path" de l'application pendant son execution
    si quelqu'un peu m'aider ou me donné deux trois methode a regardé
    ps : j'aimerai trouve une method portable (qui marche aussi sur linux ou sgi)
    Sous Unix, ce n'est pas possible. Enfin, il faudrait d'abord savoir ce que tu entends exactement par le path d'un executable car avec les liens hard et symbolique, le probleme est peut-etre mal pose.

    La technique habituelle est de s'attendre a avoir la valeur dans une variable d'environnement et de passer par un wrapper shell (qui lui dispose au moins d'une reference vers le fichier, mais comme je l'ai dit, il reste a savoir ce que tu fais des liens symboliques et hard, au moins ces derniers ne posent pas de probleme si ce que tu veux est le repertoire) qui essaie de deduire quelquechose si l'utilisateur n'a pas mis de variable d'environnement.

    Dans la FAQ de comp.unix.programmer:
    http://www.erlenstar.demon.co.uk/unix/faq_2.html#SEC23
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  10. #10
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par Mongaulois
    argv[0] donne pas le nom de l'exe?
    Pour une definition de "nom de l'exe" qui est un peu variable... Sous unix, ce nom est specifie par le programme appelant qui peut mettre n'importe quoi (et il me semble que sous Windows les interfaces pour faire de meme existent). Il est de coutume de donner le nom de l'exe tel qu'invoque par l'utilisateur (c'est ce que font les shells). Mais tu peux n'avoir qu'un chemin relatif (donc devoir parser le PATH et l'analyser, et j'ai deja vu donne un nom sans le chemin alors que le programme en question n'etait pas dans le path) et les liens symboliques peuvent rendre le resultat peu interessant en pratique. Au fait, il est aussi de coutume de modifier ce nom dans certains cas (par exemple, un shell invoque par login aura comme arg[0] un nom avec un - initial).
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  11. #11
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    en faite, j'ai un executable qui s'initialise avec un fichier de config au meme endroit que l'exe.
    malheureusement si je lance l'appli par un raccourci, l'exe ne trouve pas le fichier de config.
    d'ou la volonté de recuperer le path (absolu ou non) pour retrouve ce fichier et initialiser mon appli.
    Je ne veut pas passe par une variable d'environnement si possible.

  12. #12
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par Mongaulois
    en faite, j'ai un executable qui s'initialise avec un fichier de config au meme endroit que l'exe.
    L'emplacement traditionnel des fichiers de config sous unix, c'est /etc/appli pour ce qui est valable pour tout le systeme et $HOME/.appli. Pas besoin de retrouver ou est ton exe. Et si tu as besoin d'autre choses, tu stockes l'emplacement dans le fichier de config.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  13. #13
    Membre habitué Avatar de BigNic
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 195
    Points : 154
    Points
    154
    Par défaut
    Il y a pas mal de bonnes réponses qui t'ont été données. Vue tes besoins je te conseille de passer le path du fichier de config en argument de ton prog. Cela semble le plus simple. Car effectivement avec les liens symboliques, les lancements de rep différent (notament la contab), etc... tu vas galérer. D'ailleurs je ne connais pas sgi, mais sur unix (solaris et linux) j'ai été confronté au pb et après moulte déboires on est passé par variable d'env.

  14. #14
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    ouai.
    mais si je peut evite de mettre plein de fichier un peu partout c'est beaucoup plus propre...
    merci.
    je vais voir. c'est une solution rapide et qui marche

  15. #15
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 750
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 750
    Points : 10 669
    Points
    10 669
    Billets dans le blog
    3
    Par défaut
    Mettre un fichier de config au niveau de l'exe, c'est pas super propre, car un utilisateur classique n'a normalement pas le droit de toucher au répertoire de l'exe, et donc à son fichier de config. Sous Windows on passe en général par la base de registres, qui est plus ou moins l'équivalent de /etc/appli, et de $HOME/.appli aussi. Pour ce dernier, tu as aussi %appdata%\appli.

  16. #16
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    ca oblige une "instalation"...
    je ne peut pas mettre l'appli sur une clef usb ou CD (par exemple) et lancer l'appli sur n'importe quel autre machine...

  17. #17
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 750
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 750
    Points : 10 669
    Points
    10 669
    Billets dans le blog
    3
    Par défaut
    C'est toi qui voit, il y a les règles générales, et les cas particuliers

  18. #18
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    merci pour vos reponse

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. appeler un .exe dans mon code
    Par zaineb.z dans le forum VB.NET
    Réponses: 7
    Dernier message: 25/03/2008, 22h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo