1. ホーム
  2. c++

[解決済み] [Solved] プログラムが実行されているディレクトリを取得するには?

2022-04-02 02:06:31

質問

C/C++でプログラムを実行しているディレクトリのフルパスを取得する、プラットフォームやファイルシステムにとらわれない方法はありますか?カレントワーキングディレクトリと混同しないように。(clibやSTLのような標準的なものでない限り、ライブラリの提案はご遠慮ください)

(プラットフォーム/ファイルシステムに依存しない方法がない場合、特定のファイルシステムに対してWindowsやLinuxで動作する提案も歓迎します)

解決方法は?

以下は、実行中のアプリのフルパスを取得するコードです。

Windowsです。

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;