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)
Version imprimable
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]
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 ^^Citation:
Envoy� par Mongaulois
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.Citation:
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.Citation:
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
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).Citation:
Envoy� par Mongaulois
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.Citation:
Envoy� par Mongaulois
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 :wink:
merci pour vos reponse