Recuperer chemin d'1 exe en c++ (sous unix/linux)

Signaler
Messages postés
11
Date d'inscription
dimanche 6 juillet 2003
Statut
Membre
Dernière intervention
29 mars 2004
-
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
-
bonjour, je realise un soft qui doit tourner sous les 2 plateformes windows/unix j'ai un fichier d'initialisation et je voudrai qu'il soit au meme endroit que l'executable or pour l'ouvrire il me fo le chemin (qui est celui de l'exe et qui peut changer suivant l'endoit ou il sera installé) j'ai changé mon PATH pour que l'exe puisse etre lancé de n'importe ou mais je ne sais pas comment recuperer le chemin, sous linux, au moment du lancement du pg.Pour l'environement windows il y a la fonction qui va bien : GetModuleFileName (), mais sous unix ????????????????
Merci de votre aide

5 réponses

Messages postés
398
Date d'inscription
jeudi 30 octobre 2003
Statut
Membre
Dernière intervention
15 juin 2007
2
ben, dans les msdn j'avais vu ca :

// GETCWD.C
/* This program places the name of the current directory in the 
 * buffer array, then displays the name of the current directory 
 * on the screen. Specifying a length of _MAX_PATH leaves room 
 * for the longest legal path name.
 */

#include <direct.h>
#include <stdlib.h>
#include <stdio.h>

void main( void )
{
   char buffer[_MAX_PATH];

   /* Get the current working directory: */
   if( _getcwd( buffer, _MAX_PATH ) == NULL )
      perror( "_getcwd error" );
   else
      printf( "%s\n", buffer );
}



mais je sais pas si ca marche sous unix, et sous windows, ca te retourne le "working directory" qui est etre modifié dans un raccourci par exemple
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Dans les deux case utilises argv[0] pour récupérer le chemin de l'éxécutable
Messages postés
584
Date d'inscription
mardi 26 novembre 2002
Statut
Membre
Dernière intervention
29 mai 2015

Pour Windows GetModuleFileName est effectivement la meilleure solution. Mais c'est une API => pas pour Linux

getcwd fonctionne pour Win et Linux mais ce n'est pas tout à fait le chemin de l'exe : c'est le répertoire courant. C'est-à-dire que si on lance l'exe alors qu'on se trouve dans un autre répertoire, c'est cet autre répertoire qui sera renvoyé!

argv[0] est une bonne solution si tu fais du C "pur et dur".

On ne force pas une curiosité, on l'éveille.
.................................................Daniel Pennac
Messages postés
11
Date d'inscription
dimanche 6 juillet 2003
Statut
Membre
Dernière intervention
29 mars 2004

ben justement le but c'est de recup le rep de l'exe en etant ailleurs mais argv[0] contient juste le nom de l'executable pas le chemin vers celui ci.
De toute facon le chemin se l'exe se trouve dans PATH est ce que tu crois qu'il fo s'amuser à parser le contenu de PATH et à aller chercher dans chaque chemin!!!!!
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
non, argv[0] contient le chemin complet