我可以在同一个进程中运行Ruby解释器的多个实例吗?

时间:2013-04-19 16:28:06

标签: c++ c ruby

我有一个应用程序需要运行Ruby代码与应用程序本身连接作为一种扩展。问题是,我需要能够运行Ruby解释器的单独实例,因为一个扩展不能影响另一个扩展。

另一个问题是我要求解释器完全包含在我的可执行文件中,所以Rubinius是不可能的。 MRuby虽然仍在开发中,但似乎能够像这样运行,但是太有限了。有没有什么方法可以用MRI或任何其他比MRuby更强大的实现来做到这一点?

2 个答案:

答案 0 :(得分:3)

您在编写基础应用程序的语言是什么? C ++?

您可以分叉Ruby任务,这些任务将运行单独的Ruby实例,每个实例都是独立且自治的。您必须决定是否要与他们交谈和控制他们。或者你可以使用一些IPC,使用popen在你的代码和正在运行的Ruby应用程序之间来回交谈。

这听起来像是你在“哎呀,不是很好,如果”阶段,而不是“我该怎么做?”阶段。请查看“how to control popen stdin, stdout, stderr redirection?”以进一步讨论。

答案 1 :(得分:2)

Rubinius,JRuby和IronRuby是我所知道的唯一能够在每个进程中拥有多个Ruby环境的人。

相关问题