如何触发并忘记子进程?

2024-05-03

我有一个长时间运行的进程,我需要它来启动另一个进程(该进程也会运行很长一段时间)。我只需要开始它,然后就完全忘记它。

我设法通过从《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(使用前将#替换为@)

如何触发并忘记子进程? 的相关文章

随机推荐