La réponse principale à cette question répertorie les techniques pour tout un tas de systèmes d'exploitation.
string get_path( )
{
char arg1[20];
char exepath[PATH_MAX + 1] = {0};
sprintf( arg1, "/proc/%d/exe", getpid() );
readlink( arg1, exepath, 1024 );
return string( exepath );
}
Sous Linux (Posix ?) vous avez un lien symbolique /proc/self/exe
qui renvoie au chemin complet de l'exécutable.
Sous Windows, utilisez GetModuleFileName
.
Ne comptez jamais sur argv[0]
, dont l'utilité n'est pas garantie.
Notez que les chemins et les systèmes de fichiers ne font pas partie du langage et donc nécessairement une fonctionnalité dépendante de la plate-forme.