Ruby MRI 1.8.7:直接在代码中生成进程?

时间:2013-06-13 13:20:47

标签: ruby fork

我知道有多种方法可以在Ruby中生成新进程(例如反引号,系统(),exec()等......)

但是,是否可以直接使用作为块传递的代码生成新进程? 就像forks(fork {... block ...})。

我的问题是我不想使用分叉,因为我不想复制所有内存(因为写作而在我的情况下有问题),我想在没有调用外部红宝石的情况下生成一个“新鲜”的项目文件。

1 个答案:

答案 0 :(得分:1)

fork是唯一的方法。但是,至少在Linux上,我认为在OSX上,fork实现为 copy on write ,这意味着在子进程中写入内存区域之前,它指向直接到旧父进程的区域。所以,没问题。

修改:没关系。以上是错误的。这就是我要做的事情:

code = "puts 'hi'"
result = nil
popen("ruby") do |pipe|
  pipe.puts code
  pipe.close_write
  result = pipe.read
end