结束进程
进程自动结束
我理解的JavaScript运行逻辑主要由三部分组成:
- 同步代码
- 事件循环:JavaScript 单线程运行组成的队列,存放待处理的任务
- 监听器:在监听的事件触发后,向事件循环添加回调函数任务
Node.js 中 JavaScript 脚本进程自动结束有以下情况:
- 正常结束,满足以下全部条件
- 事件循环没有待处理的任务
- JavaScript 代码没有或全部移除了用户注册的监听器
- 没有未结束的定时器、开启中的 process.stdin 等
- 异常结束,满足以下任意条件:
process.on('uncaughtException')
没有用户注册的监听器,默认会在收到未捕获的错误时结束进程- Node.js 进程本身抛出异常无法继续运行,例如内存不足会导致程序崩溃
代码控制结束进程
process 对象上有四种方法结束进程:
exit([code])
同步地退出进程,code
默认值 0,取值只能为整数或整数字符串,可通过process.on('exit')
接收code。 进程自动结束会调用此方法,能被process.on('exit')
接收到。kill(pid[, signal])
类似操作系统命令kill,向指定pid进程发送信号,随信号不同将表现不同。 signal=0用于测试进程是否存在,不会结束进程。abort()
立即退出进程,并打印 Node.js 内核(v8)信息