Node.js kill child_进程的回调

Node.js kill child_进程的回调,node.js,child-process,Node.js,Child Process,我使用server=child_process.spawn('node',['app.js'])启动节点服务器。 我通过执行server.kill('SIGKILL')来终止这个进程 我想在app.js中进行一些清理,比如关闭数据库连接,在服务器进程被终止之前,我该如何进行清理?捕获事件并在内部进行清理。另外,使用SIGTERM,因为SIGKILL不能被缓存为指针 这必须在app.js文件中完成。您可以使用该模块。使用它,您可以提供一个回调,该回调将在进程终止后被调用 const { spawn

我使用
server=child_process.spawn('node',['app.js'])
启动节点服务器。 我通过执行
server.kill('SIGKILL')来终止这个进程


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

捕获事件并在内部进行清理。另外,使用SIGTERM,因为SIGKILL不能被缓存为指针

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

您可以使用该模块。使用它,您可以提供一个回调,该回调将在进程终止后被调用

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

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

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

但是SIGKILL不能被抓到,这个过程将在这可能之前结束。但是SIGTERM会起作用。got
错误:uv\u信号\u启动EINVAL
,如下所述:Nice catch@DanD。我会在答覆中加入一项建议。
const { spawn } = require('child_process');
const kill = require('tree-kill');

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

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