Skip to content
导航

结束进程

进程自动结束

我理解的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)信息

参考资料