NodeJS中的Process对象解析

1,822 阅读2分钟

1. process

process是一个全局的变量,所以使用的时候是不需要执行require操作,可以直接使用。

这里分两部分来说明,第一个就是可以借助它去获取进程信息,比如进程工作的时候本地是一个什么样的环境,通过process可以获取。第二个通过process可以对当前的进程做一些操作,比如说可以监听进程执行过程中内置的事件,创建子进程完成更多的操作。

1. 内存相关获取

// 查看内存消耗
console.log(process.memoryUsage());
/**
* rss: 常驻内存
* heapToal: 总内存大小
* heapUsed: 已使用内存
* external: 扩展内存 - 底层模块占用的C/C++核心模块
* arrayBuffers: 缓冲区大小
*/

2. CPU相关信息获取

console.log(process.cpuUsage());
/**
* user: 用户占用的时间片段
* system: 系统占用的时间片段
*/

3. 运行时可以通过process查看运行目录,Node环境,cpu架构,用户环境,系统平台。

process.cwd(); // 运行目录
process.version; // Node版本
process.versions; // 运行环境版本
process.arch; // cpu架构
process.env.Node_ENV; // 环境 需要先设置
process.env.PATH; // 环境变量
process.env.USERPROFILE; // 管理员目录路径 不同环境方式不一样 process.env.HOME
process.platform; // 平台 win32 macos

4. 运行时可以获取启动参数,PID,运行时间,

process.argv; // 获取运行参数,空格分隔可在数组中获取到,默认会存在Node目录和执行脚本的目录两个值。
process.argv0; // 获取第一个值, 只有这一个api
process.pid; // 获取运行的pid
process.ppid; 
process.uptime; // 脚本运行时间

事件监听在process中提供的内容。这里不会着重说明process里面到底有哪些事件,主要还是看一看在NodeJS里面熟悉一下事件驱动编程以及发布订阅的模式。

process是实现了emit接口的。可以使用on监听事件,内部提供了很多的事件,比如exit,程序退出的时候执行。这里绑定的事件只能执行同步代码,是不可以执行异步代码的,这里要注意。

process.on('exit', (code) => { // 退出时
    console.log(code); // 0
})

process.on('beforeExit', (code) => { // 退出之前
    console.log(code); // 0
})

手动退出,这种退出不会执行beforeExit,而且exit后面的代码也不会执行,因为执行exit就已经退出了。

process.exit();

5. 标准输出,输入,错误

process.stdout; // 是一个流,可以对他进行读写操作。

process.stdout.write('123'); // 123
const fs = require('fs');

fs.createReadStream('text.txt').pipi(process.stdout); // 读取文件输出。
process.stdin; // 可以拿到控制台输入的内容
process.stdin.pipe(process.stdout); // 输入之后输出
// 设置字符编码
process.stdin.setEncoding('utf-8');
// 监听readable事件,是否可读也就是有无内容
process.stdin.on('readable', () => {
    // 获取输入的内容
    let chunk = process.stdin.read();
    if (chunk !== null) {
        process.stdout.write(chunk);
    }
})