Path d'un exe en C++ sous linux
Fermé
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.
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:
- Path d'un exe en C++ sous linux
- Svchost exe - Guide
- .Exe - Télécharger - Divers Utilitaires
- Path of exile 2 - Guide
- Frst64.exe - Télécharger - Sécurité
- Bat to exe converter - Télécharger - Édition & Programmation
8 réponses
[Dal]
Messages postés
6204
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
27 février 2025
1 101
9 mai 2005 à 16:45
9 mai 2005 à 16:45
Salut Kastouninho,
Essaye getenv("_") dans stdlib.h
Dal
Essaye getenv("_") dans stdlib.h
Dal
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
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
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
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++
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++
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
4 mai 2005 à 10:12
lire la doc du glibc:
http://www.gnu.org/software/libc/manual/html_node/index.html
http://www.gnu.org/software/libc/manual/html_node/index.html
[Dal]
Messages postés
6204
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
27 février 2025
1 101
4 mai 2005 à 16:06
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
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
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.
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.
10 mai 2005 à 09:39
Ca marche parfaitement, je te remercie beaucoup. Comment as tu trouvé?