/proc/数字/exe が実行ファイルのパスになってるので、それを読むだけ。
#include <stdio.h> #include <unistd.h> char *getmodulefilename() { static char buf[1024]={}; /* char path[256]; sprintf( path, "/proc/%d/exe", getpid() ); readlink( path, buf, sizeof(buf)-1 ); */ readlink( "/proc/self/exe", buf, sizeof(buf)-1 ); return buf; } int main() { printf( "%s\n", getmodulefilename() ); return 0; }
バラしたくなったら
Man page of BASENAME
を使う
2014.09.13
/proc/self/exeが