この質問への一番の回答は、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 );
}
Linux (Posix?) では、シンボリック リンク /proc/self/exe
があります。 実行可能ファイルのフル パスにリンクします。
Windows では、GetModuleFileName
を使用します .
argv[0]
に頼らない 、これは有用であるとは限りません。
パスとファイル システムは言語の一部ではないため、必然的にプラットフォームに依存する機能であることに注意してください。