C++ 如何在 Unix 中获取正在执行的 .so 模块的文件名(和路径)

标签 c++ unix solaris

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/

相关文章:

c++ - 程序是否应该检查 "shouldn' t"但可以失败的 WinAPI 函数的失败?

c++ - 什么会导致程序异常终止?

java - Git:重构文件名后无法清理工作副本

node.js - 打印最后的终端内容

c - 我如何知道 C 程序的可执行文件是在前台还是后台运行?

c++ - 请求分号的混淆错误(错误 C2143)

c++ - 将文本附加到空间不足的编辑控件?

c - 如何将文件权限打印为字符串?

c - iconv_open() 在 Solaris 8 上返回 EINVAL

c++ - 核心文件的大小是否反射(reflect)了应用程序崩溃时的内存使用情况?