ruby on rails - ¿Cuál es la diferencia entre Process.fork y Process.spawn en Ruby 1.9.2
ruby-on-rails ruby-1.9 (2)
¿Cuál es la diferencia entre Process.fork y los nuevos métodos Process.spawn en Ruby 1.9.2 y cuál es mejor para ejecutar otro programa en un subproceso? Por lo que tengo entendido, Process.fork acepta bloque de código y Process.spawn toma un comando de sistema más algunos otros parámetros. ¿Cuándo debo usar uno en lugar del otro?
¿Cuál es la diferencia entre Process.fork y los nuevos métodos Process.spawn en Ruby 1.9.2
Process.fork
te permite ejecutar código ruby en otro proceso. Process.spawn
permite ejecutar otro programa en otro proceso. Básicamente Process.spawn
es como usar Process.fork
y luego llamar a exec
en el proceso bifurcado, excepto que le da más opciones.
¿Y cuál es mejor para ejecutar otro programa en un subproceso?
Si necesita compatibilidad con versiones anteriores, use fork
+ exec
ya que spawn
no está disponible en 1.8. De lo contrario, usar spawn
ya que ejecutar otro programa en un subproceso es exactamente para lo que se creó spawn
.
Por lo que tengo entendido, Process.fork acepta bloque de código y Process.spawn toma un comando de sistema más algunos otros parámetros.
Exactamente.
¿Cuándo debo usar uno en lugar del otro?
Usa el fork
si necesitas ejecutar código de rubí arbitrario en un proceso separado (no puedes hacer eso con spawn
). Use spawn
si necesita invocar una aplicación en un subproceso.
Creo que Process.Fork bifurca el proceso actual y Process.Spawn genera un nuevo proceso. Son muy diferentes. ¿Quieres un nuevo hilo o un nuevo proceso?