我正在寻找一种通过进程ID(pid)来杀死Node.js进程的方法。我已经在谷歌、StackOverflow和Node.js文档中搜索了数小时,这看起来应该是存在的。我只能找到基于我的变量newProc如何执行此操作的方法,但我无法使用newProc.kill(),因为我想从函数作用域外部杀死子进程。此外,出于记录目的,我需要将某些内容存储在MongoDB中,因此我认为PID可能更合适。
var pid = newJob();
kill(pid); //<--anything like this?
var newJob = function () {
var exec = require('child_process').exec,
var newProc = exec("some long running job", function (error, stdout, stderr) {
console.log("stdout: " + stdout);
console.log("stderr: " + stderr);
if (error) console.log('exec error: ' + error);
});
return newProc.pid;
}
编辑:我可以在子进程上使用process.kill(pid)吗?文档指出它是一个全局对象,可以从任何地方访问。
最后,稍微偏离一下话题,有没有办法确保pid始终是唯一的?当然,我不想无意中杀死进程。
return newProc然后调用newProc.kill('SIGHUP')。另外,您可以使用更类似于Linux的exec('kill -9 ' + newProc.pid, callback)来生成进程。 - vanadium23newProc存储在MongoDB中,然后稍后调用newProc.kill('SIGHUP');吗?如果这不起作用,我会尝试您的第二个建议。谢谢! - FullStack