我有一个共享库,有2个方法(当然还有其他的)我想移植到linux:
GetProcessName() - 应该获取可执行文件的名称或路径(要么这样做)
GetModuleName() - 应该返回运行代码的模块的名称(dll或exe)。
在Windows环境中,我使用GetModuleFileName,两种方法都有不同的变体。
我已经看到了许多获取流程名称的解决方案,但大多数都看起来有点像Hacky 我还没有找到获取模块名称的解决方案。
linux中是否有类似的功能?
我该如何实现它们?
答案 0 :(得分:2)
由于存在一些混淆,以下是获取当前函数的“模块”数据的两个步骤。
__builtin_return_address(0)
的小函数来获取当前函数。另一种方法是在&foo
内部foo()
。dl_addr
,传递当前函数的地址。