¿Cómo disparar y olvidar un subproceso?

Tengo un proceso de larga ejecución y lo necesito para iniciar otro proceso (que también se ejecutará por un buen tiempo). Solo necesito iniciarlo y luego olvidarlo por completo.

Me las arreglé para hacer lo que necesitaba sacando un poco de código del libro Programming Ruby, pero me gustaría encontrar la mejor / correcta manera y entender lo que está sucediendo. Esto es lo que obtuve inicialmente:

exec("whatever --take-very-long") if fork.nil?
Process.detach($)


Entonces, ¿es este el camino, o de qué otra manera debería hacerlo?

Después de verificar las respuestas a continuación, terminé con este código, que parece tener más sentido:

(pid = fork) ? Process.detach(pid) : exec("foo")


Agradecería alguna explicación sobre cómofork trabajos. [ya tengo eso]

Se estaba separando$$ ¿derecho? No sé por qué esto funciona, y realmente me encantaría tener una mejor comprensión de la situación.

Respuestas a la pregunta(5)

Su respuesta a la pregunta