杀死一个node.js程序而不杀死subprocess

我有一个node.js程序已经启动了多个subprocess。 我希望能够testing一下,如果节点崩溃但是让它们继续运行,这些subprocess会发生什么。 我尝试了以下内容:

process.on('SIGUSR1', function(){ process.exit(0); }); 

这对我的testing设置非常有效,当我运行以下命令时,subprocess保持正常运行,Node实例closures:

 killall -10 node 

但是,对于我的生产部署来说,让我感到意外的是,没有把孩子的stream程留下来。 我感兴趣的主要subprocess是铬浏览器的一个实例。 差异似乎是过程开始的方式。 在我的testing设置中,我直接调用节点,但是在我的生产环境中,我调用了一个调用的脚本。

我想find的是上面的匿名callback函数内部的一种方法,它处理SIGUSR1信号,告诉节点不要closures自己的subprocess。 我知道我可以分离我创build的stream程,但是我宁愿做一些不太重要的事情(尽pipe我们承认,这并不太涉及)。

我在Ubuntu 12.04上运行节点0.8.21。

感谢您的任何想法,你可以扔我的路。

我继续前进,试图看看创造这个过程的悲痛会让我产生多大的悲伤,不pipe这样做是否仍然允许我使用信号callback等等,一切似乎都不错。 所以我只是要这样实现它。

这是我的原始代码:

 self.oUIProcessHandle = spawn('chromium-browser', ['http://127.0.0.1:8091/index.html', '-kiosk', '-incognito', '-start-maximized']); 

我将其更改为以下内容:

 self.oUIProcessHandle = spawn('chromium-browser', ['http://127.0.0.1:8091/index.html', '-kiosk', '-incognito', '-start-maximized'], {detached: true, stdio: ['ignore', 'ignore', 'ignore']}); 

现在,当我从我的代码中调用process.exit(0) ,它将启动并运行我的浏览器。