imeay / blog

my blog
0 stars 0 forks source link

node process #33

Open imeay opened 6 years ago

imeay commented 6 years ago

process 对象是一个全局变量,它提供当前 Node.js 进程的有关信息,以及控制当前 Node.js 进程

process exit

事件触发条件

process.argv

process.argv 属性返回一个数组,这个数组包含了启动Node.js进程时的命令行参数。第一个元素为process.execPath。如果需要获取argv[0]的值请参见 process.argv0。第二个元素为当前执行的JavaScript文件路径。剩余的元素为其他命令行参数。

process.stdin process.stdout

下面是一个例子

process.stdin.on('data', (d) => {
  const data = d.toString();
  const [num1, num2] = data.split(' ');
  process.stdout.write(`${(Number(num1) + Number(num2)).toString()}\n`);
})

输出

➜  child_process node index.js
9 10
19
4 6

它们是一个双工流 双工流就是同时实现了 Readable 和 Writable 的流,即可以作为上游生产数据,又可以作为下游消费数据 可以看以下例子

const { createWriteStream } = require('fs');
const writable = createWriteStream('./file.txt');
process.stdin.pipe(process.stdout).pipe(writable);

由于 process.stdout 实现了双工流,所以消费stdin流数据时同时传输数据流给到可写流

buffer

申请了一定内存空间的 buffer 就像 一个池子装了一定的水,steam 流就相当是流动的水。

const buffer = Buffer.from('chenxiaochi');
process.stdout.write(buffer)
process.stdout.end();

文档参考

NodeJS Stream 五:双工流 Node.js Streams: Everything you need to know