我使用server = child_process.spawn('node', ['app.js']);
启动节点服务器。
我通过server.kill('SIGKILL');
我想在app.js
中进行一些清理,比如关闭数据库连接,在服务器进程被杀之前,我该怎么做?
答案 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
});