zoukankan      html  css  js  c++  java
  • 利用dladdr来获得so自身的路径


    #include <dlfcn.h> //定义该函数为了dladdr获取符号信息 void fun1() { } Dl_info info; //dladdr获取某个地址的符号信息 int rc = dladdr((void*)fun1, &info); //(void *)转化是关键步骤
    char dir[100];
    strcpy(dir, info.dli_fname); //info.dli_fname存的是包含文件名的路径.

    dladdr的原型:

    int dladdr(void *address, Dl_info *dlip); //这个dladdr这个函数只对动态链接程序起作用。 

    dlip 是指向Dl_info 结构的指针。该结构必须由用户分配。如果指定的address 在其中一个加载模块的范围内,则
    结构成员由dladdr() 设置。Dl_info 结构包含下列成员:
    struct {
    const char *dli_fname;  //这个路径是包含这个共享对象地址的文件路径,以我的理解就是调用这个函数的文件
    void *dli_fbase;
    const char *dli_sname;
    void *dli_saddr;
    size_t dli_size; /* ELF only */
    int dli_bind; /* ELF only */
    int dli_type;
    };

    参考链接:

    1.动态链接库加载拾遗&dladdr函数使用:https://www.jianshu.com/p/1ef4460b63db

    2.https://blog.csdn.net/dragon101788/article/details/18673323

    新战场:https://blog.csdn.net/Stephen___Qin
  • 相关阅读:
    26. 60s快速定位服务器性能问题
    27. 性能测试总体流程
    18. Jmeter-取样器二
    17. Jmeter-取样器一
    15. Jmeter-配置元件二
    14. Jmeter-配置元件一
    13. Jmeter-定时器
    git 常用命令
    数据库常用操作
    【CSS】文字超出显示省略号&连续字符换行
  • 原文地址:https://www.cnblogs.com/Stephen-Qin/p/10640471.html
Copyright © 2011-2022 走看看