栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在Python中使用ctypes卸载DLL?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在Python中使用ctypes卸载DLL?

您应该能够通过放置对象来做到这一点

mydll = ctypes.CDLL('...')del mydllmydll = ctypes.CDLL('...')

编辑: 霍普的评论是正确的,这取消了名称的绑定,但是垃圾回收不会很快发生,实际上,我什至怀疑它是否会释放已加载的库。

Ctypes似乎没有提供一种干净的方式来释放资源,它仅提供了

_handle
dlopen句柄的字段…

因此,我所看到的唯一,真正, 非常不干净的方法
是,系统地依赖dlclose句柄,但这是非常不干净的,因为ctypes在内部保留了对该句柄的引用。因此,卸载采用以下形式:

mydll = ctypes.CDLL('./mylib.so')handle = mydll._handledel mydllwhile isLoaded('./mylib.so'):    dlclose(handle)

太不干净了,我只检查了它是否可以使用:

def isLoaded(lib):   libp = os.path.abspath(lib)   ret = os.system("lsof -p %d | grep %s > /dev/null" % (os.getpid(), libp))   return (ret == 0)def dlclose(handle)   libdl = ctypes.CDLL("libdl.so")   libdl.dlclose(handle)


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/633684.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号