javascript - 在不终止子进程的情况下终止 node.js 程序

标签 javascript linux node.js process

我有一个启动了多个子进程的 node.js 程序。我希望能够测试如果 Node 崩溃但让它们启动并运行时这些子进程会发生什么。我尝试了以下方法:

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

这对我的测试设置非常有效,当我运行以下命令时,子进程继续运行并且 Node 实例关闭:

killall -10 node

但是,令我惊讶的是,在我的生产部署中,它未能让子进程启动。我感兴趣的主要子进程是 chromium-browser 的一个实例。不同之处似乎在于流程的启动方式。在我的测试设置中,我直接调用了 Node ,但在我的生产设置中,我调用了执行调用的脚本。

我想在上面的匿名回调函数中找到一种方法,它处理 SIGUSR1 信号以告诉 Node 在它杀死自己时不要关闭它的子进程。我知道我可以分离我创建的流程,但我宁愿做一些不那么复杂的事情(尽管不可否认,这并不太复杂)。

我在 Ubuntu 12.04 上运行 Node 0.8.21。

感谢您提出的任何想法。

最佳答案

我继续尝试看看仅仅创建分离进程会给我带来多少痛苦,这是否仍然允许我使用信号回调等,一切看起来都很好。所以我将以这种方式实现它。

这是我的原始代码:

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) 时,它会使我的浏览器启动并运行。

关于javascript - 在不终止子进程的情况下终止 node.js 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30333465/

相关文章:

javascript - mocha js 断言在使用 promise 时挂起?

node.js - CircleCI:构建 Meteor 2.2 docker 应用程序 - 失败

node.js - 文件夹内除一个命名文件夹外的所有文件夹的 glob

javascript - 从元素获取下一个类名

javascript - 我的函数要么没有正确声明,要么在正确的位置 "use strict"。

linux - bash shell脚本中的最后一行命令是否将退出代码传递给父级?

linux - 在没有换行的情况下用cat合并两个文件

javascript - 使用 YITH ajax 导航进行过滤后,我的 jquery 代码无法正常工作

javascript - 每当字符串获得空间时将其字符大写

linux - openSUSE Linux : No Provider for libglib-dev libgcrypt-dev found