C/C++ を使用してプログラムが実行されているディレクトリの完全なパスを取得するために、プラットフォームやファイルシステムに依存しない方法はありますか? 現在の作業ディレクトリと混同しないでください。(clib や STL などの標準的なものでない限り、ライブラリを提案しないでください。)
(プラットフォーム/ファイルシステムに依存しない方法がない場合は、Windows および Linux の特定のファイルシステムで機能する方法の提案も歓迎します。)
ベストアンサー1
実行中のアプリへの完全なパスを取得するコードは次のとおりです。
変数宣言:
char pBuf[256];
size_t len = sizeof(pBuf);
ウィンドウズ:
int bytes = GetModuleFileName(NULL, pBuf, len);
return bytes ? bytes : -1;
リナックス:
int bytes = MIN(readlink("/proc/self/exe", pBuf, len), len - 1);
if(bytes >= 0)
pBuf[bytes] = '\0';
return bytes;