【发布时间】:2021-10-03 22:03:10
【问题描述】:
我正在为我的另一个项目试验一种插件系统,主要用 C 和少量 C++ 编写。
假设某个开发人员创建了一个插件(可以说是派生类!)崩溃,它可能导致整个程序崩溃。
这个设计只能在 linux 上运行!
我设定的基本要求如下,
- 插件入口函数提供了它需要的所有数据。
- 插件不需要返回任何数据或返回通信。但应该允许这样做。
- 如果插件函数导致分段错误或遇到
signal,它不得影响主程序。
为此,我正在考虑一些方法,我需要更多的意见和建议,
- 使用
fork(),在调用插件入口函数之前派生进程并与套接字或映射内存通信。 - 使用
threads(),我认为这不起作用,因为线程不是单独的进程,并且在诸如分段错误之类的事情上,它也会使主线程崩溃。 - 使用
clone()/clone3(),这对我来说很新鲜。但它的工作原理与 fork 类似,但可以更好地控制克隆过程。
还有什么我应该考虑的想法或事情吗?
【问题讨论】: