极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node

本文更佳阅读体验:https://www.yuque.com/sunluyong/node/process

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 属性返回一个数组,内容是执行脚本时的参数,但数组前两个固定

  1. 执行当前脚本的 Node 二进制文件的绝对路径
  2. 当前执行文件绝对路径

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的更多相关文章

  1. 极简 Node.js 入门 - 2.2 事件

    极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...

  2. 极简 Node.js 入门 - 2.4 定时器

    极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...

  3. 极简 Node.js 入门 - 4.3 可读流

    极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...

  4. 极简 Node.js 入门 - 4.4 可写流

    极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...

  5. 极简 Node.js 入门 - Node.js 是什么、性能有优势?

    极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...

  6. 极简 Node.js 入门 - 1.2 模块系统

    极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...

  7. 极简 Node.js 入门 - 1.3 调试

    极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...

  8. 极简 Node.js 入门 - 1.4 NPM & package.json

    极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...

  9. 极简 Node.js 入门 - 2.1 Path

    极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...

随机推荐

  1. echarts 实战 : 图表竖着或横着是怎样判定的?

    这个问题比较简单. echarts 的图表默认是竖着的. 只要 xAxis 和 yAxis 互换,竖着的图就变成了横着的图了. 所以我们可以可以写一个xy轴互换的方法. reverseXYAxis = ...

  2. MySQL数据库的安装方法

  3. STL源码剖析:算法

    启 算法,问题之解法也 算法好坏的衡量标准:时间和空间,单位是对数.一次.二次.三次等 算法中处理的数据,输入方式都是左闭又开,类型就迭代器, 如:[first, last) STL中提供了很多算法, ...

  4. java valid 注解使用-java validation注解详解

    注解 描述 @AssertFalse 带注解的元素必须为false,支持boolean/Boolean @AssertTrue 带注解的元素必须为true,支持boolean/Boolean @Dec ...

  5. vue中使用触摸事件,上滑,下滑,等

    第一步,下载一个包 npm install kim-vue-touch -s 在当前项目中下载包 第二部 import vueTouch from 'kim-vue-touch' Vue.use(vu ...

  6. Android个人中心UI

    参考:https://blog.csdn.net/gjm15881133824/article/details/73742219

  7. WPF 半透明 模糊效果 Aero效果(1)

    先看看效果图 目前网上找到了2种实现方式,一种是 .NET Framework4.5及以后有自带的 WindowChrome 效果,一种是 WindowsAPI  dwmapi.dll  ,但这两种在 ...

  8. Python os.tcgetpgrp() 方法

    概述 os.tcgetpgrp() 方法用于回与终端fd(一个由os.open()返回的打开的文件描述符)关联的进程组.高佣联盟 www.cgewang.com 语法 tcgetpgrp()方法语法格 ...

  9. Python os.link() 方法

    概述 os.link() 方法用于创建硬链接,名为参数 dst,指向参数 src.高佣联盟 www.cgewang.com 该方法对于创建一个已存在文件的拷贝是非常有用的. 只支持在 Unix, Wi ...

  10. 排序HEOI2016/TJOI2016 二分+线段树判定

    LINK:排序 此题甚好我一点思路都没有要是我当时省选此题除了模拟我恐怕想不到还可以二分 还可以线段树... 有点ex 不太好写 考虑 暴力显然每次给出询问我们都是可以直接sort的 无视地形无视一切 ...