Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我知道有多种方法可以在 Ruby 中生成新进程(例如反引号、system()、exec() 等...)
但是,是否可以使用作为块传递的代码直接生成一个新进程?就像分叉(fork {... block ...})。
我的问题是我不想使用叉子,因为我不想复制所有内存(在我的情况下因为写作有问题),我想在不调用外部 ruby 文件的情况下生成一个“新”项目。
fork是这样做的唯一方法。但是,至少在 Linux 上,而且我认为在 OSX 上也是,fork实现为write on write,这意味着在子进程中写入内存区域之前,它直接指向旧父进程的区域。所以,没问题。
fork
编辑:没关系。以上是错误的。这是我要做的:
code = "puts 'hi'" result = nil popen("ruby") do |pipe| pipe.puts code pipe.close_write result = pipe.read end