c++ 是否有适用于Linux的GetModuleFileName()的等效函数?我将如何使用它?

ars1skjm  于 2023-03-05  发布在  Linux
关注(0)|答案(1)|浏览(230)

我在Windows上有一个函数可以获取buf中模块的地址:

GetModuleFileName(0, buf, buf_size);

我想在Linux上做同样的事情(我对Linux不太了解)。我发现函数dladdr(X, &dlInfo)似乎做了正确的事情。据我所知,我得到了dlInfoX的名称和其他细节(dli_snamedli_saddrdli_fname,..)。
但是X是什么呢?我知道它是一个地址。但是是哪一个呢?我怎么用它来获得和在Windows上一样的结果呢?

lc8prwob

lc8prwob1#

X是任何感兴趣的地址,通常是感兴趣的模块函数的地址,如果你想得到当前的模块名,X可以是调用者的地址

void X() {
  // ... 
  dladdr(X, &dlInfo);
  // or dladdr(&X, &dlInfo);
}

相关问题