我试图从子shell填充数组。这可能吗?
array = []
processes = []
limit = 10
File.foreach("/path/to/file") do |line|
if processes.size == limit
processes.delete Process.wait
end
processes << fork do
begin
something = so_something
if something == something
array.push(line)
end
end
end
end
Process.waitall
如果我这样做,则在Process.waitall之后数组显示为空。我想稍后引用该数组。
答案 0 :(得分:1)
当你分叉一个进程时,它的内存被复制,现在完全独立于父进程。如果要将一些数据传递回父级,则使用一些IPC(进程间通信)机制(管道,套接字等)
也许,而不是分叉,你想要创建一个线程而不是?线程可以更新共享状态(这正是使编写多线程程序变得困难的原因)。