C++ 如何在 Unix 中获取正在执行的 .so 模块的文件名(和路径)?
类似于 Windows 上的 GetModuleFileName 的东西。
最佳答案
尽管它不是 POSIX 标准接口(interface),dladdr()
功能在许多系统上都可用,包括 Linux , Solaris , Darwin/Mac OS X , FreeBSD , HP-UX , 和 IRIX .此函数获取一个地址,例如可以是指向模块内静态函数的指针(如果转换为 void *
),并用信息填充 Dl_info
结构包括包含该地址的共享对象的路径名(在 dli_fname
成员中)。
关于C++ 如何在 Unix 中获取正在执行的 .so 模块的文件名(和路径),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2605427/