Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

结束进程 #14

Open
luoway opened this issue Sep 18, 2023 · 0 comments
Open

结束进程 #14

luoway opened this issue Sep 18, 2023 · 0 comments

Comments

@luoway
Copy link
Owner

luoway commented Sep 18, 2023

进程自动结束

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

参考资料

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant