2012-08-10

実行中のプログラムのファイルへの絶対パスを取得する方法

Microsoft Windowsならば、GetModuleFileNameのhModuleにNULLを渡せばよい。

ではGNU/Linuxではどうするのか。Linuxでは、"/proc/self/exe"が、参照したプロセスのファイルへの絶対パスのシンボリックリンクになっているので、これをreadlinkでたどればよい。

その他の環境は、以下を参照。

c++ - Finding current executable's path without /proc/self/exe - Stack Overflow

Boostのfilesystemにそういう機能がほしいと思うのは私だけだろうか。

余談だが、/proc/self/exeについてググろうと、アドレスバーにそのまま入力したら、何やら70MBほどの、exeという名前のファイルがダウンロードされた。一瞬とまどったが、そういえば今の環境はGNU/Linuxであった。単にローカルのファイル、すなわちこの場合に/proc/self/exeのリンク先を意味する、ブラウザーであるChromiumの実行ファイルがダウンロードされただけだ。

No comments: