如何运行并忘记子进程?
我有一个漫长的流程,我需要它来推出另一个进程 /这也将工作相当长的时间/. 我只需要开始它,然后忘记他。
我设法做了我所拥有的事情,从书中拿出一点代码 Programming Ruby, 但我想找到最好的/正确的方法,了解正在发生的事情。 这就是我最初得到的:
所以,是吗,或者我应该怎么做这个?
在检查下面的答案后,我收到了这段代码似乎有更多的意义
:
我会感激一些关于它如何运作的解释
. [已经理解]
无论是断开连接
? 我不知道为什么它有效,我真的很想更好地了解情况。
我设法做了我所拥有的事情,从书中拿出一点代码 Programming Ruby, 但我想找到最好的/正确的方法,了解正在发生的事情。 这就是我最初得到的:
exec/"whatever --take-very-long"/ if fork.nil?
Process.detach/$$/
所以,是吗,或者我应该怎么做这个?
在检查下面的答案后,我收到了这段代码似乎有更多的意义
:
/pid = fork/ ? Process.detach/pid/ : exec/"foo"/
我会感激一些关于它如何运作的解释
fork
. [已经理解]
无论是断开连接
$$
? 我不知道为什么它有效,我真的很想更好地了解情况。
没有找到相关结果
已邀请:
5 个回复
涵秋
赞同来自:
目的 detach - 说啊 "I don't care when the child terminates" 避免
http://en.wikipedia.org/wiki/Zombie_process
.
帅驴
赞同来自:
将您的进程分为两部分。
然后两者
该过程是通过该功能的结果获得的。 孩子获得了价值 zero/
/因此,知道这是一个孩子/, 父母获得了价值 PID 孩子。
所以:
将使子流程开始 "something", 父流程将从他所在的地方继续。
注意
重播
目前的过程 "something", 因此,子进程永远不会执行任何后续代码。 Ruby.
称呼
它看起来好像他可能错了。 我期待它会是 PID 孩子,但如果我正确阅读了你的代码,那么事实上他会断开父进程。
石油百科
赞同来自:
那是错的。 来自p。 348 挑选 /2-是ed。/:
Fixnum 正在执行的程序的处理编号。 [r/o]
本节, "Variables and Constants" 在章节中 "Ruby Language", 非常方便解码各种各样 ruby 短的
恒定的在线版 /第一的
事实上,您将该计划与她的孩子分开,而不是她的孩子。
作为其他事情已经发言,与孩子分开的正确方法是使用它 pid 孩子回来了
.
喜特乐
赞同来自:
提供块表示 fork 运行此块 /而且只有这个街区/ 在儿童过程中,继续在父母工作。
诸葛浮云
赞同来自:
如果有人有同样的问题,我的目标是进入服务器 ssh, 然后继续这个过程无限制地工作。 所以 test.sh 这是