如何杀死使用pid的Node.jssubprocess?

我正在寻找一种方法来杀死使用他们的PID的Node.js进程。 我一直在Google,StackOverflow和Node.js文档中search几个小时。 这似乎是应该存在的东西。 我只能find如何基于我的variablesnewProc下面,但我不能做newProc.kill()因为我想从函数作用域以外杀死subprocess。 另外,我需要在MongoDB中保存一些logging,所以我认为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)subprocess? 文档声明它是一个可以从任何地方访问的全局对象。

最后,作为一个小小的切线,有没有办法确保pid将永远是唯一的? 当然,我不想无意中杀死一个进程。

process.kill()完成这项工作。 正如您在编辑中所说的, process是每个Node模块中可用的全局对象。

请注意,只有在PID运行时,PID才能唯一标识您的subprocess。 退出后,PID可能已被重新用于不同的进程。 如果你想确保你不会意外杀死另一个进程,你需要一些方法来检查这个进程是否真的是你产生的进程。 ( newProc.kill()本质上是process.kill(pid)的包装,因此也有同样的问题 。)