In MRI Rubin kann ich dies tun:Alternative zum Abrufen eines Prozesses mit 'Gabel' in 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
jedoch der obige Code wird nicht in JRuby laufen, weil es nicht 'fork' Methode unterstützt:
NotImplementedError: fork is not available on this platform
Gibt es eine alternative Lösung für Das in jRuby?
Danke.
Antworten auf [diese Frage] (http://stackoverflow.com/questions/5349629/ruby-daemons-and-jruby-alternative-options) könnten für Sie nützlich sein. –
Danke, [Löffel] (https://github.com/headius/spoon) scheint interessant, aber es löst mein Problem nicht, weil es nur einen externen Prozess hervorbringt, ohne den Zustand des aktuellen Threads zu teilen. Eigentlich brauche ich 'Kind-Prozess' ist ein anderer Ruby-Interpreter und der Child-Prozess teilt den Status des aktuellen Threads. –
@ Kelvins Antwort ist wirklich gut. Ich denke, es könnte sich lohnen zu fragen, warum Sie fork() wollen. Fork() ist ein Systemaufruf, der in Unix-basierten Systemen integriert ist. Java dagegen soll überall laufen. Wenn Sie eine Gabelung benötigen, würde ich vorschlagen, dass JRuby die falsche Ruby-Implementierung für Sie ist. – Stewart