Path d'un exe en C++ sous linux
Kastouninho
-
[Dal] -
[Dal] -
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
- .Exe - Télécharger - Divers Utilitaires
- Path of exile 2 - Guide
- Svchost exe - Guide
- Linux reader - Télécharger - Stockage
- Winrar exe - Télécharger - Compression & Décompression
8 réponses
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
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
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.
Ca marche parfaitement, je te remercie beaucoup. Comment as tu trouvé?