Nejlepší odpověď na tuto otázku uvádí techniky pro celou řadu OS.
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 );
}
Na Linuxu (Posix?) máte symbolický odkaz /proc/self/exe
který odkazuje na úplnou cestu ke spustitelnému souboru.
V systému Windows použijte GetModuleFileName
.
Nikdy se nespoléhejte na argv[0]
, což není zaručeně nic užitečného.
Všimněte si, že cesty a systémy souborů nejsou součástí jazyka, a proto nezbytně funkcí závislou na platformě.