Récupération du répertoire de l'executable

logarfr Messages postés 23 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 30 juin 2004 - 29 juin 2004 à 12:09
logarfr Messages postés 23 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 30 juin 2004 - 30 juin 2004 à 08:15
Bonjour à tous!

Je cherche un moyen pour récupérer le répertoire d'un exécutable que je lance!

Je ne veux non pas le répertoire courant mais bien le répertoire de l'application elle même et ce pour du C ANSI pour Unix!

Si quelqu'un à une solution je le remercie d'avance de me répondre!

Merci
@++

11 réponses

cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 4
29 juin 2004 à 13:09
dans 'void main(int argc, char* argv[])'

argv[0] est un pointeur vers le nom de l'executable (son chemin d'acces complet).
a toi de faire une boucle en arriere pour enlever la fin de ce chemin d'acces et pouvoir recuperer le dossier de l'executable.
0
logarfr Messages postés 23 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 30 juin 2004
29 juin 2004 à 13:14
argv[0] me donnele chemin du logiciel à partir d'ou je le lance et moi je ve le chemin complet!

Merci kan mm
0
cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 4
29 juin 2004 à 13:24
argv[0] donne le chemin d'acces complet du programme.
ex : argv[0] donne "/home/chepakoi/lenomduprog"
ce chemin d'acces ne depend pas de l'endroit depuis lequel tu lances le programme !!!! a toi ensuite de traiter la chaine pour recuperer "/home/chepakoi"
0
logarfr Messages postés 23 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 30 juin 2004
29 juin 2004 à 13:56
Pourtant si je lance mon programme en affichant argv[0] alors il m'affiche seulement le nom du programme!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fredcl Messages postés 547 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 7 octobre 2007 1
29 juin 2004 à 14:54
Sous unix argv[0] ne donne pas obligatoirement le chemin complet.
Si vous cliquez sur l'icône du programme sous KDE pour le lancer
argv[0] contiendras le chemin complet. (pour gnome ou autre gestionaire, je ne sait pas faite comme moi, faite le test)
Mais si le programme est installé par exemple dans /usr/bin et que vous lancez le programme depuis un "lien" (je suis pas sur du terme exact) ou depuis une console argv[0] est égal au nom du programme uniquement.
si vous lancer le programme depuis une console en étant dans le répertoire di logiciel en tapant ./nom_du_programme argv[0]seras égal à ./nom_du_programme .

Voila pour ces petites précisions, actuellement je cherche aussi à savoir si il existe une méthode sûre et efficace pour avoir l'emplacement d'un programme, mais je ne suis pas certain que cela existe!

A+

Fred
0
samki Messages postés 65 Date d'inscription jeudi 29 avril 2004 Statut Membre Dernière intervention 15 juillet 2004
29 juin 2004 à 14:55
salut
tu peux utiliser la fonction GetCurrentDirectory() qui donne le chemin complet du dossier qui contient l'executable.
0
logarfr Messages postés 23 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 30 juin 2004
29 juin 2004 à 15:03
"GetCurrentDirectory()" comme son nom l'indique donne le répertoire courant donc d'ou on lance l'appli et non le répertoire de l'appli meme!
0
samki Messages postés 65 Date d'inscription jeudi 29 avril 2004 Statut Membre Dernière intervention 15 juillet 2004
29 juin 2004 à 15:12
ben je pensais que tu cherchais le chemin de ton executable sinon c koi l interet?
0
logarfr Messages postés 23 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 30 juin 2004
29 juin 2004 à 15:50
exemple :

"/rep1/rep2/rep3/appli"

si je lance l'appli à partir de "/rep1/rep2" en faisant "rep3/appli", le répertoire courant est "/rep1/rep2" et non "/rep1/rep2/rep3" qui est le répertoire de l'appli
0
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 19
29 juin 2004 à 20:25
samki > pour info, la current directory n'est pas obligatoirement le dossier de l'executable, elle peut etre modifiee avant le lancement et aussi a l'execution.

ciao...
BruNews, Admin CS, MVP Visual C++
0
logarfr Messages postés 23 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 30 juin 2004
30 juin 2004 à 08:15
Bon j'ai pas trouvé comment faire mais j'ai une petite bidouille. en fait dans le prog pour atteindre les fichiers j'utilise ".". Pour lancer le prog j'utilise un shell qui se positionne directement dans le dossier de l'exécutable. Ex :

#!/bin/sh
cd /rep1/rep2/rep3/
appli

Merci @ tout ceux qui ont cherché une solution et aux auttres aussi @++
0