En la RM Ruby I puede hacer esto:Alternativa para engendrar un proceso con 'tenedor' en jRuby?
def transfer
internal_server = self.init_server
pid = fork do
internal_server.run
end
# Make the server process run independently.
Process.detach(pid)
internal_client = self.init_client
# Do other stuff with connecting to internal_server...
internal_client.post('some data')
ensure
# Kill server
Process.kill('KILL', pid) if pid
end
Sin embargo, el código no se ejecutará en jruby, ya que no es compatible con el método 'tenedor':
NotImplementedError: fork is not available on this platform
¿Hay alguna solución alternativa esto en jRuby?
Gracias.
Las respuestas a [esta pregunta] (http://stackoverflow.com/questions/5349629/ruby-daemons-and-jruby-alternative-options) pueden serle útiles. –
Gracias, [Spoon] (https://github.com/headius/spoon) parece interesante, pero no resuelve mi problema, ya que genera un proceso externo sin compartir el estado del hilo actual. En realidad, necesito 'proceso hijo' es otro intérprete de Ruby y el proceso secundario compartirá el estado del hilo actual. –
@ La respuesta de Kelvin es realmente buena. Creo que valdría la pena preguntar por qué quieres fork(). Fork() es una llamada al sistema que está integrada en sistemas basados en Unix. Por otro lado, Java está destinado a ejecutarse en cualquier lugar. Si necesita bifurcar, sugeriría que JRuby sea la implementación de ruby equivocada para usted. – Stewart