鉴于此代码:
课程模块{ 上市: virtual void run(void(* callback)(int))= 0; 字节*内存;}int main(){ module m1 = loadSomeUntrustedModule(); 模块m2 = …
我认为没有可用于将模块加载到同一进程的跨平台解决方案(此外,我们还没有跨平台模块)。
或多或少的便携式解决方案是创建另一个流程并使用跨进程通信。对于不同的操作系统,它们仍然不同,但确实存在跨平台包装器。
一种已知的实施方案是Google Chrome沙箱。在Windows上,它创建子流程,将访问权限减少到最小,并挂钩其文件i / o系统API,以便通过管道将数据转发到父流程。好的沙箱是 那 硬...