我有一个长时间运行的进程,我需要它来启动另一个进程(该进程也会运行很长一段时间)。我只需要开始它,然后就完全忘记它。
我设法通过从《Ruby 编程》一书中获取一些代码来完成我需要的操作,但我想找到最好/正确的方法,并了解发生了什么。这是我最初得到的:
exec("whatever --take-very-long") if fork.nil?
Process.detach($$)
So, is this the way, or how else should I do it?
检查下面的答案后,我最终得到了这段代码,这似乎更有意义:
(pid = fork) ? Process.detach(pid) : exec("foo")
我希望得到一些有关如何的解释fork
作品。 [已经知道了]
正在脱离$$
正确的?我不知道为什么会这样,我真的很想更好地了解情况。
阿尔尼塔克是对的。这是一种更明确的写法,没有$$
pid = Process.fork
if pid.nil? then
# In child
exec "whatever --take-very-long"
else
# In parent
Process.detach(pid)
end
分离的目的只是说,“我不在乎孩子什么时候终止”,以避免僵尸进程 http://en.wikipedia.org/wiki/Zombie_process.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)