其实我正在通过子进程进行沙盒化。我使用vm.runincontext方法来运行脚本。我使用child.stdin.write将代码传递给子进程,并使用stdin.on('data'function())在子进程中进行回收...现在我想要的是该脚本可以访问一些node.js对象或用户定义的对象通过上下文,该上下文将动态传递给子进程,并将在该上下文中运行sanbox。目前我在子进程中创建上下文对象,但我不希望我想将上下文对象传递给子进程。
答案 0 :(得分:2)
考虑一下你在问什么。您不仅要序列化当前执行上下文,还要序列化所有其他上游上下文,整个全局命名空间,文件描述符......
换句话说,这将是一项疯狂的工作,你不能。 : - )
您可以做的是序列化数据并在stdout / stdin句柄上来回发送。这就是解决这个问题的方法。
希望有所帮助。
答案 1 :(得分:0)
一般来说,你不能真正做到这一点,因为基本上你是在尝试跨进程共享数据(即内存),这是一个很大的禁忌
但是使用nowjs可以让你非常接近。查看nowjs并将所有进程挂钩到它