我正在为学校项目编写一个ruby bootstrapping脚本,这个引导过程的一部分是启动一些后台进程(编写并正常运行).我想做的是:
`/path/to/daemon1 &` `/path/to/daemon2 &` `/path/to/daemon3 &`
但是,第一次调用时会阻塞执行daemon1.我已经看过一个Process.spawn
方法的引用,但这似乎是一个1.9+的功能,我只限于Ruby 1.8.
我也尝试从不同的线程执行这些守护进程,但我希望我的引导脚本能够退出.
那么我怎样才能启动这些后台进程,以便我的引导脚本不会阻塞并且可以退出(但仍然让守护进程在后台运行)?
只要您正在使用POSIX OS,就可以使用fork
和exec
.
fork
=创建子流程
exec
=用另一个进程替换当前进程
然后,您需要通知您的主进程对创建的子进程不感兴趣Process.detach
.
job1 = fork do exec "/path/to/daemon01" end Process.detach(job1) ...