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)
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)
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
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 ^^Envoyé par Mongaulois
« 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
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
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.
ok merci.
argv[0] donne pas le nom de l'exe??
sinon, tu aurait une idée pour linux??
merci je vais essayer
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.Envoyé par Mongaulois
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.Envoyé par Mongaulois
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.
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).Envoyé par Mongaulois
Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.
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.
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.Envoyé par Mongaulois
Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.
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.
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
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.
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...
C'est toi qui voit, il y a les règles générales, et les cas particuliers
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager