2010-11-08 5 views
31

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 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 Process.spawn en Ruby 1.9.2

Respuesta

45

¿Cuál es la diferencia entre Process.fork y los nuevos métodos Process.spawn en Ruby 1.9.2

Process.fork le permite ejecutar código Ruby en otro proceso. Process.spawn le permite ejecutar otro programa en otro proceso. Básicamente, Process.spawn es como usar Process.fork y luego llamar al exec en el proceso bifurcado, excepto que le da más opciones.

y cuál es mejor ejecutar otro programa en un subproceso?

Si necesita compatibilidad hacia atrás, utilice fork + exec como spawn no está disponible en 1.8. De lo contrario, use spawn ya que ejecutar otro programa en un subproceso es exactamente para lo que está hecho el spawn.

Por lo que tengo entendido Process.fork acepta el bloque de código y Process.spawn toma un comando del sistema más algunos otros parámetros.

Exactamente.

¿Cuándo debo usar uno en lugar del otro?

Uso fork si es necesario para ejecutar código arbitrario de rubí en un proceso separado (no se puede hacer eso con spawn). Use spawn si necesita invocar una aplicación en un subproceso.

0

Creo que Process.Fork bifurca el proceso actual y Process.Spawn genera un nuevo proceso. Ellos son bastante diferentes. ¿Quieres un nuevo hilo o un nuevo proceso?

+1

Necesito un nuevo proceso y actualmente uso Process.fork (para codificación de video en segundo plano). Acabo de encontrar el nuevo método Process.spawn en Ruby 1.9 y tenía curiosidad acerca de las diferencias y si puedo beneficiarme de alguna manera. – Vincent

Cuestiones relacionadas