Node 中的 abort() 和 exit() 有啥区别?

Posted

技术标签:

【中文标题】Node 中的 abort() 和 exit() 有啥区别?【英文标题】:What's the difference between abort() and exit() in Node?Node 中的 abort() 和 exit() 有什么区别? 【发布时间】:2016-10-09 17:34:37 【问题描述】:

我注意到process.exit()process.abort() 都停止了脚本。除了一个日志Aborted之外,两者还有什么区别?

【问题讨论】:

【参考方案1】:

process.abort() 立即停止进程。

process.exit([exitCode]) 方法指示 Node.js 尽快终止进程。您还可以指定退出代码

退出代码:

0 表示进程已成功退出。 1 表示异常结束。 如果省略,0 是默认值。

【讨论】:

“尽快”是什么意思?这种模式和“立即”有什么不同? @BeenoTung 我发现某些代码可能会在调用 process.exit() 时阻止退出。在这些情况下,我需要调用 process.abort()。我仍在试图弄清楚究竟是什么阻止了 process.exit()。我知道这是主动请求队列中的某些东西,但我不知道是什么......【参考方案2】:

调用process.exit() 将强制进程尽快退出,即使仍有尚未完全完成的异步操作挂起,包括对 process.stdout 和 process.stderr 的 I/O 操作。

退出进程的正确推荐方法是设置退出代码并允许进程自然退出,因为调用process.exit() 会强制进程在执行任何其他写入标准输出之前退出。

process.exitCode = 1;

如果由于错误情况需要终止 Node.js 进程,则抛出未捕获的错误并允许进程相应地终止比调用 process.exit() 更安全。

process.abort() 方法导致 Node.js 进程立即退出并生成核心文件。

【讨论】:

【参考方案3】:

process.exit() 方法指示 Node.js 使用指定的退出代码尽快终止进程。

如果代码为0,则表示作为成功案例存在。

如果代码是1,则表示作为失败案例存在。

还有

process.abort() 方法使 Node.js 进程立即退出并生成核心文件。

除了这些,我没有看到更多的不同

【讨论】:

【参考方案4】:

abort - 这会导致进程异常终止。

exit - 函数导致正常进程终止

【讨论】:

以上是关于Node 中的 abort() 和 exit() 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

MPI_Abort() 与 exit()

Delphi中break,exit,abort跳出循环的比较

abort exit _exit return的区别

delphi中break,continue, exit,abort, halt, runerror的异同

Linux 结束进程

exit,_exit,wait,waitpid