Bonjour à tous!![]()
Voila: je fais un programme et j'aurais voulu savoir si quelqu'un ne connaitrait pas une API capable de récupérer le chemin complet de l'exécutable dans lequel elle est...
Merci à tous et bon week-end!!![]()
Bonjour à tous!![]()
Voila: je fais un programme et j'aurais voulu savoir si quelqu'un ne connaitrait pas une API capable de récupérer le chemin complet de l'exécutable dans lequel elle est...
Merci à tous et bon week-end!!![]()
Tu peux déjà récupérer le nom de l'exécutable par argv[0], il me semble.
Pour le chemin : http://man.developpez.com/man3/getcwd.3.php
Il s'y trouve aussi parfois une indication du chemin. Mais celui qui lance le programme peut y mettre n'importe quoi sous Unix comme sous Windows.Envoyé par zooro
Il n'y a a priori aucune relation entre le répertoire courant et le répertoire où se trouve l'exécutable.Pour le chemin : http://man.developpez.com/man3/getcwd.3.php
Il n'y a aucune méthode sûre et portable.
Il y a des méthodes non portables (je ne sais plus quoi pour Windows, /proc/self/exe est un lien symbolique vers l'exécutable sous Linux, il y a parfois moyen de récupérer l'info en accédant à l'éditeur de liens dynamique sous Unix,...) et il y a des moyens portables mais au résultat plus ou moins garanti (utiliser argv[0] et la variable d'environnement PATH, passer par un script...) et il y a les moyens traditionnels de la plateforme d'éviter de se poser la question (base de registres de Windows, configuration à un endroit fixe ou script modifié à l'installation sous Unix).
Oui, je l'avais déjà fait avec un démon sous Linux... PostgreSQL, par exemple, fait ça pour donner des stats.Envoyé par Jean-Marc.Bourguet
Mon prog n'est prévu que pour windows pour l'instant (Dev Cpp). Donc si qqun connait une méthode spécifique à windows, c'est volontiers![]()
Je redis pour argv[0]
@++
Trouvé l'API pour windows:
GetModuleFileName(HINSTANCE, char[MAX_PATH], MAX_PATH);
argv fonctionne, masi seulement pour les applications console (main), pas pour la WinMain.
Voilà...et ça marche![résolu]
Il y n'y a pas de méthode portable. argv[0] retourne soit :Envoyé par N3odyme
- l'adresse d'une chaine vide ("")
- l'adresse du nom du programme ("monappli")
- l'adresse du nom avec le chemin complet ("/monchemin/mon appli")
Soit un chemin relatatif, soit n'importe quoi d'autres.Envoyé par Emmanuel Delahaye
Partager