在MRI紅寶石我可以這樣做:在jRuby中用'fork'產生一個進程的替代方案?
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
但是上面的代碼將無法在JRuby中運行,因爲它不支持「叉」方法:
NotImplementedError: fork is not available on this platform
是否有任何替代解決方案這在jRuby?
謝謝。
對[此問題](http://stackoverflow.com/questions/5349629/ruby-daemons-and-jruby-alternative-options)的答案可能對您有用。 – 2012-08-05 17:21:35
謝謝[Spoon](https://github.com/headius/spoon)似乎很有趣,但它不能解決我的問題,因爲它只是產生一個外部進程而不共享當前線程的狀態。實際上,我需要'子進程'是另一個Ruby解釋器,子進程將共享當前線程的狀態。 – 2012-08-05 18:03:14
@ Kelvin的回答非常好。我認爲可能值得問一下爲什麼要fork()。 Fork()是一個內置於基於unix的系統的系統調用。另一方面,Java旨在在任何地方運行。如果你需要fork,那麼我會建議JRuby是你錯誤的ruby實現。 – Stewart 2015-04-22 04:45:08