Path d'un exe en C++ sous linux

Fermé
Kastouninho - 3 mai 2005 à 15:56
 [Dal] - 10 mai 2005 à 10:57
Bonjour,

J'aurais voulu savoir comment recuperer le path d'un exe lance de n'importe quel repertoire, en C++, sous Linux RedHat.
J'ai essaye dirname(arv[0]) qui ne marche pas (logique). J'ai essaye getcwd() mais ca ne me donne que le repertoire courant. En fait je recherche l'equivalent d'un "type".

Merci.
A voir également:

8 réponses

[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
9 mai 2005 à 16:45
Salut Kastouninho,

Essaye getenv("_") dans stdlib.h


Dal
1
Kastouninho
10 mai 2005 à 09:39
Salut Dal,

Ca marche parfaitement, je te remercie beaucoup. Comment as tu trouvé?
0
Salut Kastouninho,

Google m'a mis sur la voie de "environ", mais j'ignorais quelle variable d'environnement propre au processus contenait cette information.

Sous Linux le répertoire /proc contient un "pseudo" système de fichiers dans lequel les données propres à chaque processus lancé sont accessibles (dans des répertoires virtuels nommés selon les numéros des processus).

Alors, avec un processus que je connaissais, j'ai déterminé son "pid" (ps axl | grep nomprocessus), puis j'ai inspecté le contenu de "environ" pour ce processus (cat /proc/pid/environ).

Son path figurait en dernier :)


Dal
1
rer_louz Messages postés 276 Date d'inscription mercredi 26 novembre 2003 Statut Membre Dernière intervention 29 décembre 2008 71
3 mai 2005 à 18:24
Salut,

Au hazard mais total
#include <unistd.h>
exec "which name_executable"
which doit te retourner le chemin, apres comment recuperer la chaine ??? man exec.
C'est juste une idée non testée.
A++
0
Merci mais je pense qu'il doit exister une fct C. Mais laquelle?
0

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

Posez votre question
kmf31 Messages postés 1564 Date d'inscription mercredi 30 mars 2005 Statut Contributeur Dernière intervention 22 juin 2007 501
4 mai 2005 à 10:12
0
Merci, ca fait de la lecture
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
4 mai 2005 à 16:06
Salut Kastouninho,

Peut être que je ne comprends pas très bien ce que tu veux.. mais bon.

argv[0] contient la commande qui a permis de lancer le programme.

Sauf à ce que ton programme soit dans le $PATH, et que lorsqu'il est lancé aucun chemin ne soit indiqué, tu disposes alors dans cette variable du chemin (au moins relatif) ayant servi au lancement de l'exécutable.


Dal
0
Salut Dal,

En fait dans argv[0], je ne possede que le nom de mon executable sans le chemin. J'ai effectivement son chemin dans $PATH mais parmi d'autres dizaines de path. Lorsque je tape "type mon executable" depuis n'importe quel répertoire, il me sort le chemin où il va chercher mon executable. C'est ce chemin que je souhaiterais connaitre par le biais d'une fonction C.

Merci.
0