杀死NodeJS子进程

xpe*_*int 5 spawning node.js gulp

在开发过程中,我在NodeJS项目中犯了错误.错误导致这样的错误消息.

events.js:85
      throw er; // Unhandled 'error' event
            ^
Error: listen EADDRINUSE
    at exports._errnoException (util.js:742:11)
    at Server._listen2 (net.js:1148:14)
    at listen (net.js:1170:10)
    at net.js:1253:9
    at dns.js:82:18
    at process._tickCallback (node.js:343:11)
Run Code Online (Sandbox Code Playgroud)

没问题,我点击ctrl+C并重启过程,但我看到一些衍生的子进程仍处于活动状态.如何杀死根进程生成的所有进程?

示例代码:

module.exports.start = function(options) {
  gulp.watch(['*.js'], onServerRestart);
  onServerRestart();

  var server;
  function onServerRestart(e) {
    if (server) server.kill();
    server = require('child_process').spawn("node", ['--harmony', './server.js'], {stdio: "inherit", cwd: process.cwd() });
  };
};
Run Code Online (Sandbox Code Playgroud)

xpe*_*int 1

添加这个

  process.on('uncaughtException', function(err) {
    console.log(err);
    server.kill();
    process.kill();
  });
Run Code Online (Sandbox Code Playgroud)

解决问题。有什么建议如何在您的应用程序中处理这个问题吗?