Die häufigste Antwort auf diese Frage listet Techniken für eine ganze Reihe von Betriebssystemen auf.
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 );
}
Unter Linux (Posix?) haben Sie einen symbolischen Link /proc/self/exe
die auf den vollständigen Pfad der ausführbaren Datei verweist.
Verwenden Sie unter Windows GetModuleFileName
.
Verlassen Sie sich niemals auf argv[0]
, was garantiert nichts Nützliches ist.
Beachten Sie, dass Pfade und Dateisysteme nicht Teil der Sprache und daher notwendigerweise eine plattformabhängige Funktion sind.