Existe-t-il un moyen en C/C++ de trouver l'emplacement (chemin complet) du programme en cours d'exécution ?
(Le problème avec argv[0]
est qu'il ne donne pas le chemin complet).
Existe-t-il un moyen en C/C++ de trouver l'emplacement (chemin complet) du programme en cours d'exécution ?
(Le problème avec argv[0]
est qu'il ne donne pas le chemin complet).
Rappelez-vous que sur les systèmes Unix, le binaire peut avoir été supprimé depuis son lancement. C'est parfaitement légal et sûr sur Unix. Aux dernières nouvelles, Windows ne vous permet pas de supprimer un binaire en cours d'exécution.
/proc/self/exe sera toujours lisible, mais ce ne sera pas vraiment un lien symbolique fonctionnel. Ce sera... bizarre.
Sur Mac OS X, utilisez _NSGetExecutablePath
.
Ver man 3 dyld
et cette réponse à une question similaire.
Je voudrais
1) Utilisez la fonction basename() : http://linux.die.net/man/3/basename
2) chdir() vers ce répertoire
3) Utiliser getpwd() pour obtenir le répertoire courant
De cette façon, vous obtiendrez le répertoire sous une forme soignée et complète, au lieu de ./ ou ../bin/.
Vous voudrez peut-être sauvegarder et restaurer le répertoire actuel, si cela est important pour votre programme.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.