ruby-on-rails ruby process ruby-1.9

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?