了解Node.js中的process对象


本文摘自PHP中文网,作者青灯夜游,侵删。

相关推荐:《node js教程》

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 对象提供

1

process.stdin.pipe(process.stdout)

简单一行代码可以实现把控制台输入内容在控制台原样打印出来

执行信息

process.execPath

process.execPath 属性返回执行当前脚本的 Node 二进制文件的绝对路径

process.argv

process.argv 属性返回一个数组,内容是执行脚本时的参数,但数组前两个固定

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

  • 当前执行文件绝对路径

process.js

1

console.log(process.argv);

1

2

3

4

5

6

7

8

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

1

console.log(process.execArgv);

1

2

3

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 进程将终止

1

2

3

process.on('exit', (code) => {

  console.log(`退出码: ${code}`);

});

uncaughtException

当前进程抛出一个没有被捕捉的错误时,会触发uncaughtException事件

1

2

3

process.on('uncaughtException', function (err) {

  console.error(err.stack);

});

beforeExit

当 Node.js 清空其事件循环并且没有其他工作要安排时,会触发 beforeExit 事件。 通常 Node.js 进程将在没有调度工作时退出,但是在 beforeExit 事件上注册的监听器可以进行异步调用使 Node.js 进程继续

1

2

3

4

5

6

7

8

9

10

11

12

13

14

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 事件

1

2

3

process.on('message', (m) => {

  console.log('子进程收到消息', m);

});

process.nextTick(callback)

process.nextTick() 方法将 callback 添加到下一个时间点的队列执行

更多编程相关知识,请访问:编程视频课程!!

以上就是了解Node.js中的process对象的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

深入浅析with的使用

了解http事务、node模块化规范

node.js底层是什么语言

深入浅析node.js中的内置模块

一文搞懂node.js中的事件循环

nodejs接口如何传输数据?

node.js和javascript区别是什么

如何在node.js中启用http/2.0?

npm机制深入理解

node.js学习之静态资源服务器

更多相关阅读请进入《node.js》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...