在Ruby中产生一个后台进程

我为学校项目编写了一个ruby引导脚本,这个引导过程的一部分是启动几个后台进程(它们被编写和正常工作)。我想做的是一些类似的事情:

`/path/to/daemon1 &`
`/path/to/daemon2 &`
`/path/to/daemon3 &`

但是,阻塞在第一次调用执行daemon1。我看到过Process.spawn方法的引用,但是这似乎是一个1.9的功能,我只限于Ruby 1.8。

我也试图从不同的线程执行这些守护进程,但我想我的引导脚本能够退出。

那么如何启动这些后台进程,以便我的引导脚本不阻塞,并可以退出(但仍然有守护进程在后台运行)?

只要你在POSIX操作系统上工作,你可以使用fork和exec。

fork =创建子过程

exec =用另一个进程替换当前进程

然后,您需要通知您的主进程对通过Process.detach创建的子进程不感兴趣。

job1 = fork do
  exec "/path/to/daemon01"
end

Process.detach(job1)

...
http://stackoverflow.com/questions/2504445/spawn-a-background-process-in-ruby

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:在Ruby中产生一个后台进程