kill child_process的回调

时间:2015-03-08 01:49:55

标签: node.js child-process

我使用server = child_process.spawn('node', ['app.js']);启动节点服务器。 我通过server.kill('SIGKILL');

来杀死这个过程

我想在app.js中进行一些清理,比如关闭数据库连接,在服务器进程被杀之前,我该怎么做?

2 个答案:

答案 0 :(得分:3)

抓住事件并在里面进行清理。此外,使用SIGTERM,因为SIGKILL无法缓存为@Dan D.指向。

process.on('SIGTERM', function handleSigterm() {
    db.close();
    //more cleanup code
    //then truly exit.
    process.exit();
});

这必须在你的app.js文件中完成。

答案 1 :(得分:0)

您可以使用tree-kill模块。使用它,您可以提供一个回调,一旦进程终止,该回调将被调用。

const { spawn } = require('child_process');
const kill = require('tree-kill');

const server = spawn('node', ['app.js']);

kill(server.pid, 'SIGKILL', function(err) {
    // Do things
});