【发布时间】:2017-07-04 03:10:31
【问题描述】:
现在我在linux下编写一个可加载的.so模块,我想在主程序中使用dlopen并在可加载的.so模块中使用_init()。我的程序是这样的:
主程序:
...
dlopen(lib, flags);
...
可加载模块:
#define MODULE_EXPORT(name, minit, mexit) \
int __##name##_init(void) __attribute__((alias(#minit))); \
void __##name##_exit(void) __attribute__((alias(#mexit)));
MODULE_EXPORT(dump, dump_init, dump_exit);
static int dump_init(void)
{
...
}
现在我想将参数添加到 dump_init 函数中,如下所示:
static int dump_init(const char *param){}
我不知道该怎么做,或者我可以在 linux 中使用另一个新的 api?谢谢~
【问题讨论】:
-
如果你能做到这一点,那么第二次调用
dlopen而不需要初始化你的库的参数会怎样?