【发布时间】:2012-05-02 10:45:37
【问题描述】:
假设我加载了一个 dylib 并丢弃了句柄:
void loadfoo()
{
dlopen("/lib/foo.dylib" , RTLD_NOW);
}
然后我想在另一个函数中关闭它:
void closefoo()
{
dlclose // ???
}
如果在调用 dlopen 期间没有保存之前加载的 dylib 的句柄,我能以某种方式找到它的句柄吗?
【问题讨论】:
假设我加载了一个 dylib 并丢弃了句柄:
void loadfoo()
{
dlopen("/lib/foo.dylib" , RTLD_NOW);
}
然后我想在另一个函数中关闭它:
void closefoo()
{
dlclose // ???
}
如果在调用 dlopen 期间没有保存之前加载的 dylib 的句柄,我能以某种方式找到它的句柄吗?
【问题讨论】:
如果我在生产中看到这样的代码,我会永远鄙视其发起者,但是:
void *handle = dlopen("/lib/foo.dylib", RTLD_NOW);
dlclose(handle);
dlclose(handle);
【讨论】: