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:

Post a Comment

You can use some HTML elements, such as <b>, <i>, <a>, also, some characters need to be entity referenced such as <, > and & Your comment may need to be confirmed by blog author. Your comment will be published under GFDL 1.3 or later license with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.