当前位置: 技术问答>linux和unix
请问,so文件如何知道自己所在的路径和文件名称?谢谢
来源: 互联网 发布时间:2015-10-15
本文导语: 有没有象Windows下GetModulaName之类的函数?听说可执行文件只能使用argv[0]确定自己所在的路径?是不是真的啊? | 下面的代码可以得到本程序所在完真路径: #include #include #ifndef PATH_MAX ...
有没有象Windows下GetModulaName之类的函数?听说可执行文件只能使用argv[0]确定自己所在的路径?是不是真的啊?
|
下面的代码可以得到本程序所在完真路径:
#include
#include
#ifndef PATH_MAX
#define PATH_MAX 1024
#endif
char * get_exe_name() {
static char buf[PATH_MAX];
int rslt = readlink("/proc/self/exe", buf, PATH_MAX);
if ( rslt = PATH_MAX ) {
return NULL;
}
buf[rslt] = '';
return buf;
}
int main( void ) {
char * exe_name = get_exe_name();
puts( exe_name );
return 0;
}
#include
#include
#ifndef PATH_MAX
#define PATH_MAX 1024
#endif
char * get_exe_name() {
static char buf[PATH_MAX];
int rslt = readlink("/proc/self/exe", buf, PATH_MAX);
if ( rslt = PATH_MAX ) {
return NULL;
}
buf[rslt] = '';
return buf;
}
int main( void ) {
char * exe_name = get_exe_name();
puts( exe_name );
return 0;
}
|
到 LD_LIBRARY_PATH或系统其他地方定义环境变量。根据环境变量查找。
|
ldconfig -p|grep libXXX.so 其中包含你要找的so的路径
|
可以调用getcwd得到进程的当前目录
so怎么得到不知道
so怎么得到不知道
|
这个需要使用procfs的,并不是每一个Unix的变种都默认有procfs的,就算有的话也可以关掉的