本文共 678 字,大约阅读时间需要 2 分钟。
readlink可以获取exe所在的路径(直接和进程关联);无法获得so的路径,so路径可以用dladdr,参考另一篇文章 linux系统中有个符号链接:/proc/self/exe 它代表当前程序,所以可以用readlink读取它的源路径就可以获取当前程序的绝对路径
#include#include #include #define MAXBUFSIZE 1024int 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 );}
转载地址:http://uzbkz.baihongyu.com/