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
  • 相关阅读:
    java-数组
    java-条件判断和循环语句
    java-运算符
    python类与对象
    C#全角半角转换函数
    自己学会汉化DevExpress控件[转]
    DevExpress.XtraGrid的使用(部分)
    .Net 代码安全保护产品DNGuard HVM使用
    DataGridView 添加ComboBox
    c# 使用ChartDirector绘图的一些个人体会
  • 原文地址:https://www.cnblogs.com/Stephen-Qin/p/10640471.html
Copyright © 2011-2022 走看看