Standard I/O 标准输入输出

关于 stdin, stdout 与stderr

Lu Yuan

2015-3-20

为什么要提及标准输入输出

Previously on Native Messaging...

 

http://slides.com/luyuan/native-messaging

一些背景

 

关键字

  • Unix
  • 抽象设备
  • 数据流

stdin 标准输入

 

  • 输入至程序的数据
  • 程序要求以操作来传输数据
  • 除非重定向,预期由键盘获取
  • File Descriptor = 0

 

 

File Descriptor 文件描述符

  • 非负整数,索引值
  • 指向内核为每个进程所维护的该进程打开的文件记录表

stdout 标准输出

 

  • 程序写输出数据的流
  • 程序要求数据传输使用操作
  • 除非重定向,输出为终端
  • 行缓冲
  • File Descriptor = 1

stderr 标准错误输出

 

  • 程序用于输出错误信息或诊断的另一种输出流
  • 输出为终端
  • 无缓冲
  • File Descriptor = 2

stdin stdout stderr的创建

 

进程被创建时,系统自动创建三个数据流:

stdin, stdout, stderr。

 

默认展现在终端上。

Node.js中的标准输入输出

 

process.stdin

标准输入流默认是暂停 (pause) 的,所以必须要调用 process.stdin.resume() 来恢复 (resume) 接收。

process.stdin.setEncoding('utf8');

process.stdin.on('readable', function() {
  var chunk = process.stdin.read();
  if (chunk !== null) {
    process.stdout.write('data: ' + chunk);
  }
});

process.stdin.on('end', function() {
  process.stdout.write('end');
});

Node.js中的标准输入输出

 

process.stdout / process.stderr

console.log = function(d) {
  process.stdout.write(d + '\n');
}; 

Standard I/O

By luyuan

Standard I/O

About Standard input, output and error

  • 1,234