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
  • 相关阅读:
    datetime和time的时间戳用法
    ER图
    python update()
    理解JWT(JSON Web Token)认证及python实践
    python lambda匿名函数 用法
    flask_restful(转载)
    Flask-SQLALchemy
    创建只有一个元素的元组
    MySQL安装过程中显示无法启动
    聚类
  • 原文地址:https://www.cnblogs.com/Stephen-Qin/p/10640471.html
Copyright © 2011-2022 走看看