📜  Node.js process.stdin 属性(1)

📅  最后修改于: 2023-12-03 15:03:14.009000             🧑  作者: Mango

Node.js process.stdin 属性

在 Node.js 中,process.stdin 属性是一个可读流(Readable stream),表示当前进程的标准输入(stdin)。它提供了一种处理标准输入数据的方式。

用法

要从 process.stdin 中读取数据,您可以添加一个 'data' 事件监听器,然后调用 process.stdin.resume() 方法以使其保持活动状态。下面是一个简单的例子:

process.stdin.resume();
process.stdin.setEncoding('utf8');
process.stdin.on('data', function (chunk) {
  console.log('数据来了:' + chunk);
});

在上述例子中,我们监听了 'data' 事件,以便在读取到数据时打印出来。在这里将 process.stdin.resume() 方法调用是为了使输入流一直处于活动状态。

特殊字符

对于标准输入,您需要知道什么时候它已经完成输入。这是通过检测 end 事件来完成的。调用 process.stdin.end() 方法将触发这个事件,当 stdin 流中有数据时,也会自动触发。

在处理标准输入时,要注意如何处理特殊字符。例如,在 Windows 上使用 Ctrl + Z 可以退出程序。在 UNIX 上,您需要使用 Ctrl + D。以下是每个操作系统的特殊字符列表:

Windows
  • Ctrl + Z:EOF
UNIX
  • Ctrl + D:EOF
  • Ctrl + C:退出
实例

下面是一个完整的程序,它将从控制台读取输入并计算出输入每个数的和。

process.stdin.resume();
process.stdin.setEncoding('utf8');

let sum = 0;

process.stdin.on('data', function (chunk) {
  const numbers = chunk.trim().split(' ');

  numbers.forEach(function (number) {
    sum += Number(number) || 0;
  });
});

process.stdin.on('end', function () {
  console.log('和:' + sum);
});

在这个例子中,我们监听了 data 事件以读取输入。每次事件触发时,我们读取一行输入,将其分解成数字并将其添加到 sum 变量中。最后,我们监听了 end 事件,以便在输入结束时打印出总和。

总结

process.stdin 属性提供了一种处理标准输入数据的方式,使 Node.js 可以以流的方式读取标准输入。要处理标准输入,您需要注意如何处理特殊字符,并在结束时检查 end 事件。