极简 Node.js 入门 - 2.3 process
极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node
process 对象是一个全局变量,是一个 EventEmitter 实例,提供了当前 Node.js 进程的信息和操作方法
系统信息
process 对象提供了属性用于返回关键系统信息,常用的有
- title:进程名称,默认值 node,程序可以修改,可以让错误日志更清晰
- pid:当前进程 pid
- ppid:当前进程的父进程 pid
- platform:运行进程的操作系统(aix、drawin、freebsd、linux、openbsd、sunos、win32)
- version:Node.js 版本
- env:当前Shell的所有环境变量
stdin & stdout
Node.js 和标准输入、输出设备交互对象也通过 process 对象提供
process.stdin.pipe(process.stdout)
简单一行代码可以实现把控制台输入内容在控制台原样打印出来
执行信息
process.execPath
process.execPath 属性返回执行当前脚本的 Node 二进制文件的绝对路径
process.argv
process.argv 属性返回一个数组,内容是执行脚本时的参数,但数组前两个固定
- 执行当前脚本的 Node 二进制文件的绝对路径
- 当前执行文件绝对路径
process.js
console.log(process.argv);
node process.js a --b=2
[
'/usr/local/bin/node',
'/Users/undefined/node-demo/process.js',
'a',
'--b=2'
]
process.execArgv
process.execArgv 属性返回一个数组,成员是命令行下执行脚本时,在 Node 可执行文件与脚本文件之间的命令行参数
process.js
console.log(process.execArgv);
node --inspect process.js
[ '--inspect' ]
常用操作方法
- process.chdir():切换工作目录到指定目录
- process.cwd():返回运行当前脚本的工作目录的路径,也就是执行 node 命令时候的目录
- process.exit():退出当前进程
- process.memoryUsage():返回 Node.js 进程的内存使用情况
进程事件
process 对象是 EventEmitter 对象实例,可以监听一些系统核心事件, 常使用的有
exit
当 Node.js 进程因以下原因之一即将退出时,则会触发 exit
事件:
- 显式调用
process.exit()
方法 - Node.js 事件循环不再需要执行任何其他工作
此时无法阻止退出事件循环,并且一旦所有 exit
事件的监听器都已完成运行时,Node.js 进程将终止
process.on('exit', (code) => {
console.log(`退出码: ${code}`);
});
uncaughtException
当前进程抛出一个没有被捕捉的错误时,会触发uncaughtException
事件
process.on('uncaughtException', function (err) {
console.error(err.stack);
});
beforeExit
当 Node.js 清空其事件循环并且没有其他工作要安排时,会触发 beforeExit
事件。 通常 Node.js 进程将在没有调度工作时退出,但是在 beforeExit
事件上注册的监听器可以进行异步调用使 Node.js 进程继续
process.on('beforeExit', (code) => {
console.log('进程 beforeExit 事件的代码: ', code);
});
process.on('exit', (code) => {
console.log('进程 exit 事件的代码: ', code);
});
console.log('此消息最新显示');
// 打印:
// 此消息最新显示
// 进程 beforeExit 事件的代码: 0
// 进程 exit 事件的代码: 0
message
如果使用 IPC 通道 fork Node.js 进程,子进程收到父进程使用 childprocess.send()
发送的消息,就会触发 message
事件
process.on('message', (m) => {
console.log('子进程收到消息', m);
});
process.nextTick(callback)
process.nextTick() 方法将 callback 添加到下一个时间点的队列执行
极简 Node.js 入门 - 2.3 process的更多相关文章
- 极简 Node.js 入门 - 2.2 事件
极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...
- 极简 Node.js 入门 - 2.4 定时器
极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...
- 极简 Node.js 入门 - 4.3 可读流
极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...
- 极简 Node.js 入门 - 4.4 可写流
极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...
- 极简 Node.js 入门 - Node.js 是什么、性能有优势?
极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...
- 极简 Node.js 入门 - 1.2 模块系统
极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...
- 极简 Node.js 入门 - 1.3 调试
极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...
- 极简 Node.js 入门 - 1.4 NPM & package.json
极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...
- 极简 Node.js 入门 - 2.1 Path
极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...
随机推荐
- koa中是如何封装获取客户端IP的?
案例 var koa = require('koa') var app = new koa() app.use(function (ctx,next) { ctx.body = ctx.ip }) a ...
- layui 魔改:富文本编辑器添加上传视频功能
甲方又整新需求了:富文本编辑器需要可以传视频. layui本身的富文本编辑器没有传视频的功能,所以,又到了咱们魔改的时候了. 友情提醒,富文本编辑器 layedit 只有layui的V1版有,V2版没 ...
- 【揭秘】C语言类型转换时发生了什么?
ID:技术让梦想更伟大 作者:李肖遥 链接:https://mp.weixin.qq.com/s/ZFf3imVaJgeesuhl1Kn9sQ 在C语言中,数据类型指的是用于声明不同类型的变量或函数的 ...
- 利用华为eNSP模拟器实现vlan之间的通信
eNSP交换机配置VLAN 1. 搭建网络拓扑结构 运行eNSP>新建拓扑>搭建如下图的拓扑结构>启动设备.利用调色板将划分的vlan进行区分. 2. pc机IP地址配置 pc1的I ...
- springMVC(二)springMVC、Mybatis、spring整合
数据库设置: 一.配置文件设置 (1).springMVC配置文件(前端控制器web.xml,核心配置文件springmvc.xml) <?xml version="1.0" ...
- 离线安装 docker
1.基础环境 操作系统:CentOS 7.8 docker 版本:18.06.1 2.docker 下载 2.1 官方地址 https://download.docker.com/linux/stat ...
- Day02_Vue.js与Webpack
Vue.js与Webpack 1 vue.js介绍 1.vue.js是什么? Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设 ...
- Day13_商品详情及静态化
学于黑马和传智播客联合做的教学项目 感谢 黑马官网 传智播客官网 微信搜索"艺术行者",关注并回复关键词"乐优商城"获取视频和教程资料! b站在线视频 0.学习 ...
- 企业权限管理(SSM整合)(总结)
学于黑马程序员和传智播客联合做的教学项目 感谢 黑马程序员官网 传智播客官网 个人根据教程的每天的工作进度的代码和资料 密码:cti5 b站在线视频 微信搜索"艺术行者",关注并回 ...
- pandas_查看数据特征和统计信息
# 查看数据特征和统计信息 import pandas as pd # 读取文件 dataframe = pd.read_excel(r'C:\Users\lenovo\Desktop\总结\Pyth ...