Linux插件的实现主要依赖运行时加载,程序在运行时控制加载指定的模块,并且可以在不需要该模块时将其卸载。
主要函数:
1. dlopen:用来打开一个动态库,并将其加载到进程的地址空间
2. dlsym:运行时加载的核心部分,可以通过这个函数找到所需要的符号
3. dlclose:将一个已经加载的模块卸载。
4. dlerror:每次调用dlopen,dlsym,dlclose以后,都可以调用dlerror判断上一次调用是否成功。
插件框架的主要思路:
1. 建立一个plugin文件夹,里面存放要加载的插件
2. 每个插件都是一个动态库so,都实现约定好的函数,例如run和help
3. 列出所有插件时遍历plugin文件夹里的所有动态库so,先dlopen,然后dlsym查找help函数并执行
4. 执行插件主要内容就是dlsym查找run函数并执行
参考: