readlink 获取进程的绝对路径
readlink可以获取exe所在的路径(直接和进程关联);无法获得so的路径,so路径可以用dladdr,参考另一篇文章
linux系统中有个符号链接:/proc/self/exe 它代表当前程序,所以可以用readlink读取它的源路径就可以获取当前程序的绝对路径
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #define MAXBUFSIZE 1024 int main ( int argc, char * argv[] ) { char buf[ MAXBUFSIZE ]; int count; count = readlink( "/proc/self/exe", buf, MAXBUFSIZE ); if ( count < 0 || count >= MAXBUFSIZE ) { printf( "Failed\n" ); return( EXIT_FAILURE ); } /* readlink仅将软链接文件的内容拷贝到buf中, 却不会追加字符串结束符, 因此我们需要自己追加字符串结束符。*/ buf[ count ] = '\0'; printf( "/proc/self/exe -> [%s]\n", buf ); return( EXIT_SUCCESS ); }
新战场:https://blog.csdn.net/Stephen___Qin