node.js,process.kill()和process.exit(0),哪一个可以杀死进程?

时间:2018-03-07 03:19:18

标签: node.js

我读了node.js文档。它说:

  

即使这个函数的名称是process.kill(),它实际上只是一个信号发送者,作为kill系统调用。发送的信号可能会执行除杀死目标进程之外的其他操作。

console.log('当前进程id: ', process.pid);

process.on('SIGHUP', function() {
  console.log('Got SIGHUP signal');
});

setTimeout(() => {
  console.log('Exiting...');
  process.exit(0);  //kill process
  console.log('已经退出进程id: ', process.pid); //does not output
}, 1000);

process.kill(process.pid, 'SIGHUP'); //does not kill process
console.log('正在退出进程id: ', process.pid); //so this output normally

输出:

当前进程id:  64520
正在退出进程id:  64520
Got SIGHUP signal
Exiting...

似乎process.exit(0)是杀死node.js进程的那个。

3 个答案:

答案 0 :(得分:1)

使用process.exit(),它以指定的代码结束进程。调用process.exit()将强制进程尽快退出,即使仍有待处理的异步操作

<强>语法: process.exit([code])

链接:

  1. Exit codes
  2. Exit() Documentation

答案 1 :(得分:1)

这一切都取决于您所处的环境。就像Gospal Joshi所说的$buttonOpenFilter.on(clickEvent, function(e) { e.stopPropagation(); e.preventDefault(); var $this = $(this).parent(); var classOpen = 'open'; if ($this.hasClass(classOpen)) { $this.removeClass(classOpen).css('max-height', 30); } else { $this.siblings().removeClass(classOpen).css('max-height', 30); $this.addClass(classOpen).css('max-height', $this.find('ul').height() + 105); } }); 对于快速结束该过程很有用。但是在其他情况下,您可能需要在关机之前将信号传递给该进程以进行清理/正常关机。例如,如果您正在听信号事件,例如:

process.exit([code])

它使您可以运行清理或正常关闭进程,而无需执行任何操作即可立即退出。

process.on('SIGINT', () => { //do something } -Node Documentation

答案 2 :(得分:1)

process.kill(pid, [ code ]) 适用于具有多个进程的并发应用程序(因为您只需插入要杀死的进程的 pid 即可)。

process.exit() 如果您没有需要杀死主节点进程以外的任何其他进程的用例,那么它就足够了,并且是最常见的。

就个人而言,我建议您使用 process.exit(),除非您真的必须杀死另一个进程(pid 与 process.pid 不同)