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

cs_liloupucienne Messages postés 11 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 29 mars 2004 - 11 déc. 2003 à 11:35
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 - 11 déc. 2003 à 18:35
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

hilairenicolas Messages postés 398 Date d'inscription jeudi 30 octobre 2003 Statut Membre Dernière intervention 15 juin 2007 2
11 déc. 2003 à 11:43
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
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
11 déc. 2003 à 11:44
Dans les deux case utilises argv[0] pour récupérer le chemin de l'éxécutable
0
garslouche Messages postés 583 Date d'inscription mardi 26 novembre 2002 Statut Membre Dernière intervention 29 mai 2015 1
11 déc. 2003 à 11:55
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
0
cs_liloupucienne Messages postés 11 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 29 mars 2004
11 déc. 2003 à 15:29
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!!!!!
0

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

Posez votre question
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
11 déc. 2003 à 18:35
non, argv[0] contient le chemin complet
0
Rejoignez-nous